Тем временем майкрософт добавляет раст в исходники винды, гугл добавляет раст в исходники андроида, гугл же уговаривает линуксоидов добавить раст в исходники линукса (впервые с начала существования линукса в нем есть что-то кроме Си), мозилла переписала движок css в файрфоксе на раст, дискорд переписал на него свой бекенд.
Индустрия заинтересована в расте, отчеты говорят, что 70% всех багов в программах на Си и С++ - это баги памяти. Программист забыл очистить память, или очистил уже очищенную память. Причем ошибаются все. Даже крутейшие разработчики ОС в Майкрософте, Гугле, Линуксе.
Киллер-фича раста не сахар (хотя он шикарен), а безопасная работа с памятью.
В расте практически невозможны утечки памяти, висячие указатели, двойные очистки памяти, гонки данных, короче любая стрельба по ногам (чтобы было возможно нужно призвать сатану).
Всё дело в концепции проверки времени жизни.
Например самое простое.
fn main() {
let x: &i32;
{
let y = 100;
x = &y;
}
println!("{}", *x);
}
Еще на этапе компиляции вылезет ошибка, что Х живет дольше чем У, поэтому Х не может ссылаться на У вне скобок, в которых живет У. C/C++ такой код пропустят и умрут в рантайме с сообщением segmentation fault. Или умудрятся продолжить работу, что еще хуже.
Или вот
fn get_ref() -> &i32 {
let x = 100;
return &x;
}
Тут компилятор снова скажет, что здесь ошибка времени жизни, и ссылка на Х не может быть возвращена, так как таким образом ссылка на Х будет жить дольше чем сам Х, а это ошибка. А С/С++ снова пропустят такой код.
И это самые простые примеры. Раст разбирается и с куда более сложными ситуациями. У механизма проверки времени жизни есть свои правила, которые надо изучить, иначе программирование на расте будет выглядеть как попытки умилостивить злого демона-компилятора, которому всё не нравится.