Microsoft ha lanzado la biblioteca oficial de Rust para la API de Windows

La biblioteca está diseñada como una caja Rust bajo la licencia MIT, que se puede usar así:

[dependencias] ventanas = "0.2.1"

[dependencias de compilación] windows = "0.2.1"

Después de esto, en el script de compilación build.rs, puede generar los módulos necesarios para su aplicación:

fn principal() {
ventanas::compilar!(
ventanas::datos::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

La documentación sobre los módulos disponibles se publica en docs.rs.

Ejemplo de código:

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

utilizar enlaces::{
ventanas::datos::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn principal() -> windows::Resultado<()> {
let doc = DocumentoXml::nuevo()?;
doc.load_xml(" Hola Mundo ")?;

let root = doc.document_element()?;
afirmar!(root.node_name()? == "html");
afirmar!(root.inner_text()? == "hola mundo");

inseguro {
dejar evento = CreateEventW(
std::ptr::null_mut(),
verdadero.into(),
falso.into(),
std::ptr::nulo(),
);

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

De acuerdo(())
}

Algunas llamadas a funciones no son seguras porque estas funciones se proporcionan tal cual, sin adaptarlas a las convenciones de Rust. La caja está diseñada según el mismo principio. libc, que sirve como caja básica para acceder a libc y se utiliza como base para crear bibliotecas con una interfaz segura.


El proyecto fue creado en el marco Proyecto de metadatos Win32, que está diseñado para facilitar la creación de API para diferentes lenguajes de programación. La segunda biblioteca, que se creó en base al Proyecto de Metadatos en la primera fase del proyecto: C # / Win32. Microsoft también anunció el inicio de los trabajos en versión para C++, que utiliza un estilo de lenguaje moderno.

Fuente: linux.org.ru