На Scala я ничего серьезного не разрабатывал, но много лет назад брался ее изучать. Сначала все сильно нравилось, а потом стал пробовать писать код посложнее и смешение ООП и функционального подхода мне нравиться перестали. Rust в этом смысле более практичный язык, как мне кажется. Хотя конечно, многих ФП-плюшек в нем не хватает.
Сравнивать экосистемы Java и Rust сейчас совершенно бессмысленно — у Java она просто гигантская.
Но вот о технологических фичах стоит поговорить: почему какой-нибудь Яндекс пишет добрую половину своих сервисов на C++? Почему не все на Java? Потому что когда начинают считать, во сколько серверов обойдутся фичи Java, все ее преимущества сходят на нет. Но C++ дороже в разработке и поддержке — вот и получается 50 на 50 (грубо). А Rust — он как раз в этой средней точке.
Я Java-приложения на Rust не переписывал. Просто говорю по своему опыту, что возни с GC в крупных приложениях на Java больше, чем проблем с BC (наличие которого через полгода практики перестаешь замечать).
Согласен, наверное это самое большое разочарование для программиста на Rust: язык сначала воодушевляет, а потом оказывается, что то — нельзя, это — нельзя… И возникает уныние.
Я прошел этот этап с пониманием того, что Rust — это не состояние, а процесс. Язык никогда не будет соответствовать своему идеалу, он все время будет как-бы недоработан, и это нормально. В Rust заметно противоречивое балансирование между красотой/стройностью и практичностью. Я принял это и вижу в таком подходе даже преимущества. Идеал виден, он осязаем, и язык развивается в его сторону, хоть и не так быстро. Настоящие проблемы возникнут у него если развитие остановится.
Не знаю, но я использую Rust уже 4 года, и количество проектов, где я его с успехом для себя применяю — растет. И все это прикладная разработка. Rust тем и хорош, что это императивный язык по-сути, он сильно проще, чем Scala.
А боров… он страшен только пока не наберешь опыта и не переключится мозг. Через полгода ежедневного программирования уже его не замечаешь совсем.
Почему бэкенд не заберет? Использую Rust на бэке много где (кое-где и на фронте), очень удобно. И вообще web-часть в экосистеме Rust значительна и хорошо развита.
Ну что принципиально она упрощает? Я писал долгое время web-приложения на Java, теперь пишу на Rust. И разницы не замечаю (в вопросах удобства управления памятью). А вот то, что теперь не надо тюнить JVM, чтобы сделать выделение памяти и сборку мусора предсказуемой — очень даже чувствую.
Rust по-умолчанию использует системный аллокатор, но может использовать и любой другой, пользовательский (например, jemalloc). Также сборщик мусора можно сделать в виде внешней библиотеки.
Вообще, есть мнение (неподтвержденное), что следование концепции владения и заимствования в Rust, которая относится к любым ресурсам в программе, приводит к лучшей архитектуре, чем без него.
Вы ошибаетесь. Rust — универсальный ЯП, хоть и позиционируется прежде всего как системный. Поэтому так медленно и отвоевывает себе рынок. Реально Rust так же интересно использовать в прикладной разработке, как и в системном программировании, если не интереснее.
Открою маленький секрет: если попытаться скомпилировать мой код без
async_recursion, то компилятор скажетТак что в данном случае, наверное, такой код смогут написать почти все, кто вообще дошел до
async/.awaitв Rust ))Такое поведение имеется ввиду?
Полный код
Пока — нигде.
В подовляющем большинстве случаев используется просто lifetime elision.
Я знаю ситуацию изнутри.
На Scala я ничего серьезного не разрабатывал, но много лет назад брался ее изучать. Сначала все сильно нравилось, а потом стал пробовать писать код посложнее и смешение ООП и функционального подхода мне нравиться перестали. Rust в этом смысле более практичный язык, как мне кажется. Хотя конечно, многих ФП-плюшек в нем не хватает.
Возможно, но с необходимостью такое писать в асинк-коде пока еще не сталкивался на практике. Подозреваю, что это скорее исключительный случай.
Фронт написан с использованием Yew и компилируется в WASM.
Сравнивать экосистемы Java и Rust сейчас совершенно бессмысленно — у Java она просто гигантская.
Но вот о технологических фичах стоит поговорить: почему какой-нибудь Яндекс пишет добрую половину своих сервисов на C++? Почему не все на Java? Потому что когда начинают считать, во сколько серверов обойдутся фичи Java, все ее преимущества сходят на нет. Но C++ дороже в разработке и поддержке — вот и получается 50 на 50 (грубо). А Rust — он как раз в этой средней точке.
Я Java-приложения на Rust не переписывал. Просто говорю по своему опыту, что возни с GC в крупных приложениях на Java больше, чем проблем с BC (наличие которого через полгода практики перестаешь замечать).
Согласен, наверное это самое большое разочарование для программиста на Rust: язык сначала воодушевляет, а потом оказывается, что то — нельзя, это — нельзя… И возникает уныние.
Я прошел этот этап с пониманием того, что Rust — это не состояние, а процесс. Язык никогда не будет соответствовать своему идеалу, он все время будет как-бы недоработан, и это нормально. В Rust заметно противоречивое балансирование между красотой/стройностью и практичностью. Я принял это и вижу в таком подходе даже преимущества. Идеал виден, он осязаем, и язык развивается в его сторону, хоть и не так быстро. Настоящие проблемы возникнут у него если развитие остановится.
Переметнулся? )
Не знаю, но я использую Rust уже 4 года, и количество проектов, где я его с успехом для себя применяю — растет. И все это прикладная разработка. Rust тем и хорош, что это императивный язык по-сути, он сильно проще, чем Scala.
А боров… он страшен только пока не наберешь опыта и не переключится мозг. Через полгода ежедневного программирования уже его не замечаешь совсем.
Почему бэкенд не заберет? Использую Rust на бэке много где (кое-где и на фронте), очень удобно. И вообще web-часть в экосистеме Rust значительна и хорошо развита.
Ну что принципиально она упрощает? Я писал долгое время web-приложения на Java, теперь пишу на Rust. И разницы не замечаю (в вопросах удобства управления памятью). А вот то, что теперь не надо тюнить JVM, чтобы сделать выделение памяти и сборку мусора предсказуемой — очень даже чувствую.
Очень спорно. Хорошая система типов в Rust увеличивает скорость разработки и поддержки именно сложных приложений.
Rust по-умолчанию использует системный аллокатор, но может использовать и любой другой, пользовательский (например, jemalloc). Также сборщик мусора можно сделать в виде внешней библиотеки.
Вообще, есть мнение (неподтвержденное), что следование концепции владения и заимствования в Rust, которая относится к любым ресурсам в программе, приводит к лучшей архитектуре, чем без него.
Вы ошибаетесь. Rust — универсальный ЯП, хоть и позиционируется прежде всего как системный. Поэтому так медленно и отвоевывает себе рынок. Реально Rust так же интересно использовать в прикладной разработке, как и в системном программировании, если не интереснее.
К тому времени все уже на Rust перепишут )
rustupставится в домашнюю директорию и все установленное через него тоже сохраняется туда же. Довольно удобно.В Rust Utf-8 строки, просто вы на них смотрите по-умолчанию как на байтовый массив.