Microsoft ha rilasciato la libreria Rust ufficiale per l'API di Windows

La libreria è progettata come una cassa Rust con licenza MIT, che può essere utilizzata in questo modo:

[dipendenze] finestre = "0.2.1"

[build-dipendenze] finestre = "0.2.1"

Successivamente, nello script build build.rs, puoi generare i moduli necessari per la tua applicazione:

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

La documentazione sui moduli disponibili è pubblicata su docs.rs.

Esempio di codice:

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

usa le associazioni::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn principale() -> windows::Risultato<()> {
let doc = XmlDocument::new(?);
doc.load_xml(" Ciao mondo ")?;

let root = doc.document_element(?);
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "ciao mondo");

non sicuro {
let evento = CreaEventoW(
std::ptr::null_mut(),
vero.into(),
false.into(),
std::ptr::null(),
);

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

OK(())
}

Alcune chiamate di funzione utilizzano unsafe perché queste funzioni vengono fornite così come sono, senza adattarle alle convenzioni di Rust. Crate è progettato secondo lo stesso principio. libc, che funge da base per accedere a libc e viene utilizzato come base per creare librerie con un'interfaccia sicura.


Il progetto è stato creato all'interno del quadro Progetto metadati Win32, progettato per semplificare la creazione di API per diversi linguaggi di programmazione. La seconda libreria, creata sulla base del Metadata Project nella prima fase del progetto - C#/Win32. Microsoft ha inoltre annunciato l'inizio dei lavori versione per C++, che utilizza uno stile di linguaggio moderno.

Fonte: linux.org.ru