Кажется, сабжу до продакшена еще очень долго.
Очевидные фичи вроде "показать тип переменной в IDE" https://github.com/RustDT/RustDT/issues/45 - зарепорчены только месяц назад.
С учетом того, что там нет REPL, язык компилируемый и почти все полезные фичи реализованы в виде системы типов - анализатор времен жизни, трейты, input/output типы, мутабельность и прочее, а либы представляют собой трэш из очень генерик кода на трейтах - без типовыводилки и ссылок из IDE на документацию и исходники типов пользоваться языком достаточно сложно.
Вот, например: https://github.com/hyperium/hyper/blob/master/src/net.rs#L67
Чтобы понять, что здесь написано - надо почитать трейт Into, структуру Box, найти что такое NetworkStream (чуть выше) увидеть что он наследуется от Read + Write + Any + Send + Typeable, осилить еще и эти трейты, перечитать реализации всех трейтов дальше по коду, разобраться, какой из них из std, какой локальный и прочая, прочая и прочая.
Меня смущает вот эта "нелокальность" языков, когда для того, чтобы понять происходящее, надо идти не в базовую либу, документацию и класс-предок, а облазить пол-интернета, кэши пакетных менеджеров, исходники либ на гитхабе и половину stackoverflow и гуглогрупп разработчиков языка
Кроме того, вот в этой либе для http совершенно неработоспособен выход из программы под виндой. Если сделать серверу close - оно с равной вероятностью секунд 15 выкидывает в каждом рабочем потоке по os error (без объяснений, что за ошибка, где и зачем) либо просто молча виснет и начинает жрать все (иногда одно) ядра процессора в цикле.
И да, поддержки отладочных PDB символов пока нет, т.к. сборка делается llvm и mingw - т.е. windbg на продакшене не используешь. mingw gdb же умирает с ошибкой, если запустить под ним тестовую софтину http-сервер.
Очевидные фичи вроде "показать тип переменной в IDE" https://github.com/RustDT/RustDT/issues/45 - зарепорчены только месяц назад.
С учетом того, что там нет REPL, язык компилируемый и почти все полезные фичи реализованы в виде системы типов - анализатор времен жизни, трейты, input/output типы, мутабельность и прочее, а либы представляют собой трэш из очень генерик кода на трейтах - без типовыводилки и ссылок из IDE на документацию и исходники типов пользоваться языком достаточно сложно.
Вот, например: https://github.com/hyperium/hyper/blob/master/src/net.rs#L67
Чтобы понять, что здесь написано - надо почитать трейт Into, структуру Box, найти что такое NetworkStream (чуть выше) увидеть что он наследуется от Read + Write + Any + Send + Typeable, осилить еще и эти трейты, перечитать реализации всех трейтов дальше по коду, разобраться, какой из них из std, какой локальный и прочая, прочая и прочая.
Меня смущает вот эта "нелокальность" языков, когда для того, чтобы понять происходящее, надо идти не в базовую либу, документацию и класс-предок, а облазить пол-интернета, кэши пакетных менеджеров, исходники либ на гитхабе и половину stackoverflow и гуглогрупп разработчиков языка
Кроме того, вот в этой либе для http совершенно неработоспособен выход из программы под виндой. Если сделать серверу close - оно с равной вероятностью секунд 15 выкидывает в каждом рабочем потоке по os error (без объяснений, что за ошибка, где и зачем) либо просто молча виснет и начинает жрать все (иногда одно) ядра процессора в цикле.
И да, поддержки отладочных PDB символов пока нет, т.к. сборка делается llvm и mingw - т.е. windbg на продакшене не используешь. mingw gdb же умирает с ошибкой, если запустить под ним тестовую софтину http-сервер.