Последняя версия Rust добавляет async-await для простого асинхронного программирования, и Microsoft считает, что этот язык может стать альтернативой C++.
В то время как многие люди хотят поговорить о Go, именно Rust действительно предлагает что-то новое, и он заслуживает того, чтобы быть самым горячим языком, который существует на данный момент. То, что Ржавчина не претендует на внимание, возможно, потому, что мы склонны видеть новое как трудное, и это правда, что кривая обучения для ржавчины более крутая.
Часто утверждается, что строгая типизация является ключом к программированию без ошибок-по крайней мере, гораздо меньше ошибок, — но использование Rust права собственности действительно сокращает количество ошибок.
Новое в версии 1.39-поддержка асинхронного ожидания, и хотя это не может уменьшить количество ошибок в асинхронном коде, это значительно облегчает его написание, и это должно иметь эффект. Async-await-это высокоуровневый подход к ожиданию завершения операций. Он устраняет обратные вызовы и другие обходные методы возобновления выполнения, позволяя явно возобновить выполнение. Rust делает это несколько иначе, чем JavaScript и C# — два самых известных языка с асинхронным ожиданием.
То, что вы делаете,-это объявляете функцию в состоянии ожидания с помощью асинхронности:
async fn myFunction()
Когда вы вызываете асинхронную функцию, она не выполняет вычисления. Вместо этого он возвращает будущее, которое является вычислением, но в приостановленном состоянии. Чтобы начать вычисление, все, что вам нужно сделать, это использовать оператор .await:
let myFuture = myFunction();
myFuture.await();
В этом смысле фьючерсы Ржавчины ленивы — они не исполняются, пока вы их не дождетесь. Утверждается, что async-await хорошо интегрируется в систему «заимствования», и именно так Rust разделяет объекты между владельцами.
С принятием асинхронного подхода к асинхронному программированию Rust снова подчеркивает тот факт, что он пытается стать современным языком. Это может быть язык, который имеет много общего с Mozilla, но Microsoft, похоже, стремится дать ему справедливое испытание, обнаружив, что большинство ошибок, с которыми им приходится иметь дело, связаны с ошибками выделения памяти. Вы должны очень постараться в Rust, чтобы создать такую ошибку, и, следовательно, это хорошая замена для C++.
Адам Берч, инженер-программист, команда Hyper-V пишет:
Этот блог описывает часть истории принятия Rust в Microsoft. Недавно мне было поручено экспериментально переписать низкоуровневый системный компонент кодовой базы Windows (извините, мы пока не можем сказать, какой именно). Вместо того, чтобы переписывать код на C++, меня попросили использовать Rust, безопасную для памяти альтернативу. Хотя проект еще не завершен, я могу сказать, что мой опыт работы с Rust был в целом положительным. Это хороший выбор для тех, кто хочет избежать распространенных ошибок, которые часто приводят к уязвимостям безопасности в кодовых базах C++.
Единственными реальными негативными моментами являются упущения:
Учитывая относительную молодость Руста, все еще есть некоторые недостающие языковые особенности, которые были бы очень желательны для нашего развития. Прежде всего, это безопасная трансмутация (безопасное приведение типов “простых старых данных” к необработанным байтам и из них), безопасная поддержка объединений в стиле C и ошибочное распределение (изящно отказать из-за сбоя распределения, а не паники).
Есть также некоторые недостатки в способностях модульного тестирования груза Rust.
Будет интересно посмотреть, как Rust будет развиваться в долгосрочной перспективе в качестве альтернативы C++, который глубоко укоренился в Microsoft, поскольку именно на нем написана большая часть Windows.