> http://rustmustdie.com/
> чтиво для просветления разума от раста В принципе, достаточно прочитать первый абзац.
Безграмотная каша, приправленная тоннами демагогии:
>> #[rustc_builtin_macro]
становится вдруг "непосредственно в языке есть конструкция вывода", ну и заодно, типа "рантаймом"
>> Сказки о невероятных удобствах и возможностях макросов, якобы позволяющих перенести в компайлтайм любое вычисление, рушатся уже на этапе написания первой программы на этом удивительном языке!
Еще Rust оказывается "уникален" неизменяемыми по умолчанию переменными (это вообще придумали задолго до рождения аффтыря)
>> Rust уникален не только в способе вывода строки. Приведём пример с использованием переменного и неизмянеямого значений,"
const времени компиляции:
const fn sum_test(xs: [Point; 3]) -> Point {
xs[0].add(xs[1]).add(xs[2])
}
оказывается просто аналог сишного #define
>> Константами в Rust именуется ещё одна, третья сущность, обозначающая константы времени компиляции, те что в Си обычно определяются через define
Откровенное вранье:
>> как следствие, необходимо знать, понимать и помнить правила вывода типа, которые невероятно сложны, в силу чего задача определения, может ли тип быть выведен и какой тип будет выведен, также сложна.
натягивание совы на глобус:
>> На самом деле это конструктор объекта итерируемого типа из стандартной библиотеки. Вновь мы наблюдаем привязку языка к стандартной библиотеке, которая в таком случае теряет своё значение как библиотека и становится просто-напросто частью языка — вновь рушатся иллюзии о нулевом рантайме.
откровенная оторванность от реальности:
>> объявления верхнего уровня в Rust могут идти в любом порядке, то есть мы можем использовать функцию, определённую позже в коде программы. Это требует многопроходности, а с учётом обильного использования макросов и статического анализа делает процесс компиляции неожиданно медленным: даже небольшие программы порой компилируются часами.
Безграмотность (впрочем, как и полное неосиляние концепта владений)
>> По сути техника владения и перемещения была придумана, чтобы не копировать сложные значения, для которых это может быть очень трудоёмкой задачей.
Демагогия с передергиванием:
>> Мы можем написать такую программу, отдав строку во власть встроенного в стандартную библиотеку сборщика мусора методом подсчёта ссылок:
>> use std::rc::Rc;
...
>> Особо стоит подчеркнуть, что сборщик мусора встроен в стандартную библиотеку, которая неотделима от самого языка, а потому заявления, что Rust — это якобы язык без сборки мусора, — лживы
>> разумный человек
>> Сообщество Rust — это мир фанатиков.
>> Каким-то чудом в сообществе Rust умудряются выжить единицы адекватных программистов, и мне больно видеть, как их разъедает ржавчина.
сравнение жопы с пальцем:
pub fn magic() { /* 4300 */
let v: Vec<i32> = vec![1, 2, 3]
.into_iter().map(|x| x + 1).collect();
}
void magic() { /* 20 */
int v[] = {1, 2, 3};
for (int i = 0; i != 3; ++i) {
v[i]++;
}
}
(причем "получаемый машиннй код" для раста - "естественно" дебагсборка без оптимизаций)
там еще куча всего по мелочи (например,
>> при этом, в отличие от макросов языка Лисп, макросы Rust пишутся на ином, отличном от базового языке — поэтому для их написания надо изучить по сути ещё один язык вдобавок к базовому языку Rust.
(o Scheme аффтар благополучно не слышал)
В общем, вброс на уровне Опеннетных Военов Антираста.