Size: a a a

CODE BLOG / Чат

2021 August 23

SS

Steel Sword in CODE BLOG / Чат
Я в курсе
источник

ФА

Фея Актива in CODE BLOG / Чат
Это был вопрос, я не в курсе
источник

ФА

Фея Актива in CODE BLOG / Чат
Я еще раст не смотрел
источник

SS

Steel Sword in CODE BLOG / Чат
А где вопросительный знак?)

Да, итератор встроенный.
источник

P

Phantom in CODE BLOG / Чат
trait вроде и есть способ для расширения готовых классов, нет?
источник

P

Phantom in CODE BLOG / Чат
источник

ФА

Фея Актива in CODE BLOG / Чат
Короче раст это си на стеройдах.
источник

ФА

Фея Актива in CODE BLOG / Чат
Чую ждет его судьба других таких языков выскочек. А с/с++/с#/джава вечны
источник

SS

Steel Sword in CODE BLOG / Чат
трейт это как интерфейс, но с такой фичей как дефолтные методы.
Интерфейсы на стероидах.
источник

ФА

Фея Актива in CODE BLOG / Чат
Внебрачный сын питона и си
источник

ФА

Фея Актива in CODE BLOG / Чат
А что у функций нет возвращаемого типа?
источник

ФА

Фея Актива in CODE BLOG / Чат
У нас же строгая типизация.
источник

ФА

Фея Актива in CODE BLOG / Чат
Так ладно надо посмотреть что это за раст такой
источник

SS

Steel Sword in CODE BLOG / Чат
Тем временем майкрософт добавляет раст в исходники винды, гугл добавляет раст в исходники андроида, гугл же уговаривает линуксоидов добавить раст в исходники линукса (впервые с начала существования линукса в нем есть что-то кроме Си), мозилла переписала движок css в файрфоксе на раст, дискорд переписал на него свой бекенд.
Индустрия заинтересована в расте, отчеты говорят, что 70% всех багов в программах на Си и С++ - это баги памяти. Программист забыл очистить память, или очистил уже очищенную память. Причем ошибаются все. Даже крутейшие разработчики ОС в Майкрософте, Гугле, Линуксе.

Киллер-фича раста не сахар (хотя он шикарен), а безопасная работа с памятью.
В расте практически невозможны утечки памяти, висячие указатели, двойные очистки памяти, гонки данных, короче любая стрельба по ногам (чтобы было возможно нужно призвать сатану).

Всё дело в концепции проверки времени жизни.
Например самое простое.

fn main() {
   let x: &i32;
   {
       let y = 100;
       x = &y;
   }

   println!("{}", *x);
}


Еще на этапе компиляции вылезет ошибка, что Х живет дольше чем У, поэтому Х не может ссылаться на У вне скобок, в которых живет У. C/C++ такой код пропустят и умрут в рантайме с сообщением segmentation fault. Или умудрятся продолжить работу, что еще хуже.


Или вот

fn get_ref() -> &i32 {
   let x = 100;
   return &x;
}

Тут компилятор снова скажет, что здесь ошибка времени жизни, и ссылка на Х не может быть возвращена, так как таким образом ссылка на Х будет жить дольше чем сам Х, а это ошибка. А С/С++ снова пропустят такой код.
И это самые простые примеры. Раст разбирается и с куда более сложными ситуациями. У механизма проверки времени жизни есть свои правила, которые надо изучить, иначе программирование на расте будет выглядеть как попытки умилостивить злого демона-компилятора, которому всё не нравится.
источник

SS

Steel Sword in CODE BLOG / Чат
Есть, просто я из main ничего и не возвращал.
Надо писать fn fn_name(params) -> return_type
источник

ФА

Фея Актива in CODE BLOG / Чат
Да я уже загуглил, сижу читаю. Ладно интересно спасибо. Пойду потыкаю раст, интересно стало.
источник

𝕄

𝕄𝕣. 𝔾𝕣𝕒𝕪... in CODE BLOG / Чат
Ребят, есть эксперт в области смартфонов)?
источник

Б[

Барсик [SpamBlock]... in CODE BLOG / Чат
никак вы блять не научитесь
источник

Б[

Барсик [SpamBlock]... in CODE BLOG / Чат
источник

𝕄

𝕄𝕣. 𝔾𝕣𝕒𝕪... in CODE BLOG / Чат
Товарищ (хотя сомневаюсь что после этого товарищ). В этом чате обсуждаются темы от собачего простатита до мирового финансового кризиса, так что метавопрос ерунда по сравнению с этим. Вы просто рискуете нарваться на грубость. Ну а если вам всё равно, то мне тоже пох, выговорился)
источник