Microsoft het die amptelike Rust-biblioteek vir die Windows API vrygestel

Die biblioteek is ontwerp as 'n Rust-krat onder die MIT-lisensie, wat soos volg gebruik kan word:

[afhanklikhede] vensters = "0.2.1"

[bou-afhanklikhede] vensters = "0.2.1"

Hierna kan jy in die build.rs bou script die modules genereer wat nodig is vir jou toepassing:

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

Dokumentasie oor beskikbare modules word gepubliseer op docs.rs.

Kode voorbeeld:

mod bindings {
::vensters::sluit_bindings in!();
}

gebruik bindings::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Resultaat<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" Hello Wêreld ")?;

laat wortel = doc.document_element()?;
beweer!(root.node_name()? == "html");
beweer!(root.inner_text()? == "hallo wêreld");

onveilig {
laat gebeurtenis = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::nul(),
);

Stel Gebeurtenis(gebeurtenis).ok()?;
WaitForSingleObject(gebeurtenis, 0);
CloseHandle(gebeurtenis).ok()?;
}

Ok(())
}

Sommige funksie-oproepe gebruik onveilig omdat hierdie funksies verskaf word soos dit is, sonder om dit aan te pas by Rust-konvensies. Krat is op dieselfde beginsel ontwerp. libc, wat dien as 'n basiese krat vir toegang tot libc en word gebruik as 'n basis vir die bou van biblioteke met 'n veilige koppelvlak.


Die projek is binne die raamwerk geskep Win32 Metadata-projek, wat ontwerp is om dit makliker te maak om API's vir verskillende programmeertale te skep. Die tweede biblioteek, wat op grond van die Metadata-projek in die eerste fase van die projek geskep is - C#/Win32. Microsoft het ook die begin van werk aangekondig weergawe vir C++, wat 'n moderne taalstyl gebruik.

Bron: linux.org.ru