Спасибо
Вместо RLS уже написали rust-analyzer.
Пример на 7:53 скомпилируется, так как примитивы копируются а не перемещаются.
@Nikita Krupitskas Потому, что скопировать i32 к примеру так же дешево как и переместить. 52:20
@@vitaliyzinchenko480 фигово, когда нет единого поведения, тем более что с точки зрения ранней документации это реально не должно было компилироваться или должно было бы выдавать warning т.к. пытаемся получить доступ к неинициализированной let, вместо этого что-то мы копируем, а что-то перемещаем. Печально что в новом языке, который претендует на прозрачность и однозначность (притом сам заставляет явно указывать некоторые фишки, вроде преобразования типов, в том числе в сторону расширения) допускает за кадром подобное поведение. И начинающих работать с языком собьёт с толку, т.к. в литературе сказано одно, а тестируешь - получается другое.
@@andrewvsk2368 да, ну во всех языках примитивы отличаются от вновь созданных типов, тут разница одна и она очевидная. Мне норм.
И объяснение тоже хорошее -- копировать и перемещать примитивы стоит одинаково.
Трейты больше похожи на протоколы в clojure
Можно ли изучать Rust как первый язык программирования?
В качестве первого лучше подойдут Javа, затем Kotlin. А потом можно и Rust, он сложнее раз в 5 минимум, но эта сложность оправдана
@@mythbuster6126 В rust есть и понятные темы. Я бы начинал с изучения C. Я и въехал благодаря C. Не Basic, не Pascal, не Java, не C++, не Python. Но может быть благодаря учителю на курсах. Если будет нормальный учитель и учебный план и практика, то можно начинать сразу с Rust. Мне так кажется.
Два первых места в том бенчмарке сейчас занимает C++.
А, ну, могу сказать, а, что, доклад, а, интересный, а, но, как бы можно, а, было бы, ну, например, сократить, а, это доклад, а, в два раза, а, ну.
6:50 Переменная - это переменная. Из самого слова "переменная" понятно, что она изменяема. В расте точно это называется переменными?
Ну даже в the rust book пишут "immutable variable". Никто уже не вдумывается в этимологию этого слова. "Константная переменная" ни разу не произносил за всё то время, что программируешь?
@@StealerSlain нет. Меня, скорее всего, уволили бы за такое) Я говорю "константы")
Даже в Haskell, где нет изменяемного состояния (по умолчанию) есть понятие "переменная". Это понятие используется в математическом смысле. Скажем, мы можем связать с X любое значение, но когда связали, присвоить новое уже не можем.
Например, у нас есть функция: F(X) = X * X. Так как на месте X может оказаться что угодно, да и применять эту функцию мы можем много раз с разными аргументами, то мы называем это переменной.
В Rust есть ещё и константы - то, что вычисляется в момент компиляции. Скорее всего, "изменяемые переменные" так названы, чтобы не путать их с константами.
Тебе надо - сделал изменяемой и изменил. В остальное время, когда ты не собираешься в неё писать, она защищена от изменения. А константа и в Африке константа, её поменять во время выполнения не получится.
Можно называть идентификатором константного значения, идентификатором мутабельного значения
Какой-то слегка мазохистский язык. ;) Хотелось бы иметь "Котлин для системного программирования", дружелюбный инструмент, который программисту помогает, а не стоит над ним с плёткой.
этим он и помогает, что стоит с плеткой. мы уже видели, что происходит, когда язык пытается удовлетворить все, даже самые нелепые хотелки и позволяет говнокодить налево-направо
7.50 это по моему самая тупая "фича", пригорает от такого поведение в c# так как этот тупой компилятор не может разобрать ситуацию когда во всех ветках переменная инициализируется и не может быть так что она не инициирована.
А про поведение на 8.20 вообще нет слов. Так то у нас якобы супер константы но мувить мы можем, гениально..
На 8:20 не константы, а неизменяемые переменные. let это просто биндинг для рантайм переменной, для compile-time констант ключевое слово const. Но вообще там ошибка и код скомпилируется, потому что i32 - Copy тип (для этого типа реализован трейт Copy, который форсит copy-семантику), а значит обе переменные (точнее, биндинги к переменным) будут валидные.
Мне кажется, такое поведение (7:50) в C# - проблема не самой фичи, а её реализации. В Java, например, точно так же нельзя читать потенциально неинициализированную переменную, но я не припомню случаев, когда у компилятора были ложные срабатывания. А вот в том же C++ компилятор не настолько строгий, что, однако, не делает написание кода более удобным, зато заставляет иногда посидеть с отладчиком.
Rust - не компилируется.
Я так понял, это шутка, выведенная индукцией, что ни один пример из доклада не скомпилировался (якобы, т.к. Илья накосячил с пониманием копирования примитивов).
Спасибо, Илья! Хороший доклад
I realize it's pretty off topic but do anybody know of a good site to watch newly released tv shows online ?
@Cannon Jabari Lately I have been using Flixzone. You can find it on google :)