Microsoft lanzou a biblioteca oficial Rust para a API de Windows

A biblioteca está deseñada como unha caixa Rust baixo a licenza MIT, que se pode usar así:

[dependencias] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Despois diso, no script de compilación build.rs, pode xerar os módulos necesarios para a súa aplicación:

fn main() {
windows::construír!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

A documentación sobre os módulos dispoñibles publícase en docs.rs.

Código de exemplo:

enlaces mod {
::windows::include_bindings!();
}

usar enlaces::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" ola mundo ")?;

let root = doc.document_element()?;
afirmar!(nome_raíz.nodo()? == "html");
afirmar!(root.inner_text()? == "ola mundo");

inseguro {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(evento).ok()?;
WaitForSingleObject(evento, 0);
CloseHandle(evento).ok()?;
}

Ok(())
}

Algunhas chamadas de funcións usan non seguras porque estas funcións se proporcionan tal e como están, sen adaptalas ás convencións de Rust. Crate está deseñada co mesmo principio. libc, que serve como caixa básica para acceder á libc e úsase como base para construír bibliotecas cunha interface segura.


O proxecto foi creado no marco Proxecto de metadatos Win32, que está deseñado para facilitar a creación de API para diferentes linguaxes de programación. A segunda biblioteca, que foi creada baseándose no Proxecto Metadatos na primeira fase do proxecto - C#/Win32. Microsoft tamén anunciou o inicio dos traballos versión para C++, que utiliza un estilo de linguaxe moderno.

Fonte: linux.org.ru