Microsoft hà liberatu a biblioteca ufficiale Rust per l'API Windows

A biblioteca hè cuncepita cum'è una cassa Rust sottu a Licenza MIT, chì pò esse usata cusì:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Dopu questu, in u script build.rs build, pudete generà i moduli chì sò necessarii per a vostra applicazione:

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

A documentazione nantu à i moduli dispunibuli hè publicata nantu docs.rs.

Codice di mostra:

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

aduprà ligami ::{
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(" salutu mondu ") ?;

lasciate root = doc.document_element () ?;
assert! (root.node_name ()? == "html");
assert!(root.inner_text()? == "salutu mondu");

inseguru {
lascia l'avvenimentu = CreateEventW (
std::ptr::null_mut(),
true.in(),
false.in (),
std::ptr::null(),
);

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

ok(())
}

Alcune chjama di funzione usanu micca sicura perchè queste funzioni sò furnite cum'è, senza adattà à e cunvenzioni Rust. Crate hè designatu nantu à u listessu principiu. libc, chì serve cum'è una cassa di basa per accede à libc è hè utilizatu com'è una basa per custruisce biblioteche cù una interfaccia sicura.


U prugettu hè statu creatu in u quadru Win32 Metadata Project, chì hè pensatu per fà più faciule per creà API per diverse lingue di prugrammazione. A seconda biblioteca, chì hè stata creata basatu annantu à u Prughjettu di Metadata in a prima fase di u prugettu - C#/Win32. Microsoft hà ancu annunziatu u principiu di u travagliu versione per C++, chì usa un stile mudernu di lingua.

Source: linux.org.ru