Microsoft publikigis la oficialan Rust-bibliotekon por la Vindoza API

La biblioteko estas dizajnita kiel Rust-kesto sub la MIT-Licenco, kiu povas esti uzata jene:

[dependecoj] fenestroj = "0.2.1"

[konstruo-dependecoj] fenestroj = "0.2.1"

Post ĉi tio, en la konstrua skripto build.rs, vi povas generi la modulojn, kiuj estas bezonataj por via aplikaĵo:

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

Dokumentaro pri disponeblaj moduloj estas publikigita sur docs.rs.

Ekzempla kodo:

mod ligadoj {
::windows::inkluzivi_ligojn!();
}

uzu ligadojn::{
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 (" Saluton mondo ")?;

lasu radikon = doc.document_element()?;
aserti!(radiko.nodo_nomo()? == "html");
aserti!(radiko.interna_teksto()? == "saluton mondo");

nesekura {
lasu eventon = KreiOkazaĵonW(
std::ptr::null_mut(),
vera.en(),
false.into(),
std::ptr::null(),
);

SetEvent(okazaĵo).ok()?;
WaitForSingleObject(okazaĵo, 0);
CloseHandle(okazaĵo).ok()?;
}

Bone(())
}

Kelkaj funkciovokoj uzas nesekurajn ĉar ĉi tiuj funkcioj estas provizitaj kiel estas, sen adapti ilin al Rust-konvencioj. Kesto estas desegnita laŭ la sama principo. libc, kiu funkcias kiel baza kesto por aliri libc kaj estas uzata kiel bazo por konstrui bibliotekojn kun sekura interfaco.


La projekto estis kreita en la kadro Win32 Metadatuma Projekto, kiu estas dizajnita por faciligi krei APIojn por malsamaj programlingvoj. La dua biblioteko, kiu estis kreita surbaze de la Metadatuma Projekto en la unua fazo de la projekto - C#/Win32. Microsoft ankaŭ anoncis la komencon de laboro pri versio por C++, kiu uzas modernan lingvostilon.

fonto: linux.org.ru