Microsoft ha llançat la biblioteca oficial Rust per a l'API de Windows

La biblioteca està dissenyada com una caixa Rust sota la llicència MIT, que es pot utilitzar així:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Després d'això, a l'script de compilació build.rs, podeu generar els mòduls necessaris per a la vostra aplicació:

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

La documentació sobre els mòduls disponibles es publica a docs.rs.

Codi de mostra:

enllaços mod {
::windows::include_bindings!();
}

utilitzar enllaços::{
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(" Hola món ")?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hola món");

insegur {
deixar l'esdeveniment = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

D'acord(())
}

Algunes trucades de funcions utilitzen insegures perquè aquestes funcions es proporcionen tal qual, sense adaptar-les a les convencions Rust. Crate està dissenyat amb el mateix principi. libc, que serveix com a caixa bàsica per accedir a libc i s'utilitza com a base per crear biblioteques amb una interfície segura.


El projecte es va crear en el marc Projecte de metadades Win32, que està dissenyat per facilitar la creació d'API per a diferents llenguatges de programació. La segona biblioteca, que es va crear a partir del Projecte Metadades en la primera fase del projecte - C#/Win32. Microsoft també va anunciar l'inici de les obres versió per a C++, que utilitza un estil de llenguatge modern.

Font: linux.org.ru