Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
далеко не всегда оптимальный генерируемый код по сравнению с другими языками (по скорости)
великоватые бинарники
отсутствие компилятора (как и эмит-бэкенда) для не-интел платформ
Rust работает поверх LLVM, что, в частности, означает свободную поддержку ARM. Версия для Android, кстати, официально поддерживается разработчиками языка.Да, это все хорошо. Но я немного о другом: пока что для раста очень мало готовых бутстрап-компиляторов под разные платформы и операционные системы. То есть я могу, конечно, сказать
./configure --target=arm-unknown-linux-gnueabi, но мне в любом случае понадобится нативный rustc. Еще пример: lang/rust есть в портах FreeBSD, но он amd64-only и более того:.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1000000Можно, конечно, попробовать собрать rustс+LLVM самостоятельно, но это не самый тривиальный процесс, и я совсем не уверен, что мне удастся получить работающий компилятор, скажем, для powerpc или спарка. А у того же окамла такой проблемы нет.
BROKEN= Only compiles on FreeBSD 10 and 11
.endif
Rust сочетает в себе эффективность С и С++ с безопасностью Java.
template<class Point>
void callMe(Point &&p){
...
}
callMe( Point(1,2) );
Point p(1,2);
callMe(p);
Насколько я знаю без трассирующего сборщика мусора нельзя собрать некоторые «частные» случаи, например циклические ссылки. Непонятно как в Rust решили эту проблему. Но если решили, определённо тянет на открытие.
Rc<T>, который предоставляет указатель с подсчётом ссылок, и да, для него есть специальный тип Weak<T>, который решает проблему циклических ссылок. Поэтому да, делать ссылающиеся на себя структуры немного неудобно.and_then(). В обсуждении есть ещё несколько RFC, которые предлагают различные варианты решения.
Mozilla наметила план для выпуска Rust 1.0