Rust, похоже, является великим спасителем программирования на данный момент, и Microsoft является последней, кто прыгнул на подножку с Rust для Windows.
Я не говорю, что прыгать на подножку ржавчины-это плохо, но Microsoft-интересный попутчик в путешествиях. В недавнем мире Microsoft существовало только два языка — C++ как язык системного программирования и C# для всего остального. После краха Windows 8 Microsoft стала всеядной, когда дело дошло до языков, приняв JavaScript, Python и все, что попадало в поле зрения.
Остается вопрос, является ли Rust просто еще одним языком для добавления в коллекцию, которую, по мнению Microsoft, можно поддерживать. Например, есть серия руководств «Начало работы с» — «Начало работы с» — Python, Node.js, Android, C++, C#, Docker, PowerShell, База данных, а теперь и Rust. Однако в середине всего этого есть та новость, что теперь у нас есть ржавчина для окон. Это не просто использование Rust для разработки какой-то универсальной консольной программы, а проект по представлению API Windows программе Rust через ящик Windows. Это, по-видимому, включает в себя все, от базовых оконных функций до Xaml. Все это возможно благодаря проекту метаданных Windows, который описывает API в машиночитаемой форме, которая может быть автоматически преобразована в Rust:
То, что Microsoft может поиграть с Rust, неудивительно, но это первый случай, когда Microsoft проявила привязанность к языку, который мог бы заменить C++ при создании Windows и многих инструментов и приложений Windows. В последнее время было много разговоров о том, чтобы позволить ржавчине проникнуть в ядро Linux, может быть, команда Windows думает о том же? Если судить по прошлому опыту, они, вероятно, смыкают ряды и защищают C++ как можно энергичнее — все равно это не значит, что этого не произойдет.
С другой стороны, вам должно быть немного грустно видеть первый пример на сайте Windows Rust. Все начинается достаточно хорошо:
fn main() -> windows::Результат<()> {
пусть doc = XmlDocument::new()?;
doc.loadXML(«hello world«)?;
пусть root = doc.documentElement()?;
утверждайте!(корень.nodeName()? == «html»);
утверждайте!(корень.innerText()? == «привет, мир»);
но потом мы врезаемся в:
небезопасный {
пусть event = CreateEventW(std::ptr::null_mut(), true, false, None);
SetEvent(событие).ok()?;
WaitForSingleObject(событие, 0);
CloseHandle(событие).ok()?;
MessageBoxA(Нет, «Текст», «Подпись», MESSAGEBOX_STYLE::MB_OK);
}
Нет особого смысла принимать ржавчину, если вам придется прибегнуть к «небезопасному» в первый раз, когда что-то выглядит сложным. Является ли ржавчина для Windows достаточно опасной, чтобы ее стоило рассмотреть. Интересный вопрос…