Microsoft je izdal uradno knjižnico Rust za Windows API

Knjižnica je zasnovana kot zaboj Rust pod licenco MIT, ki se lahko uporablja takole:

[odvisnosti] windows = "0.2.1"

[odvisnosti gradnje] windows = "0.2.1"

Po tem lahko v gradbenem skriptu build.rs ustvarite module, ki so potrebni za vašo aplikacijo:

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

Dokumentacija o razpoložljivih modulih je objavljena na docs.rs.

Vzorčna koda:

modne vezi {
::windows::include_bindings!();
}

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

fn main() -> windows::Result<()> {
naj doc = XmlDocument::new()?;
doc.load_xml(" Pozdravljen, svet ")?;

pusti root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "zdravo svet");

nevarno {
naj dogodek = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

V redu(())
}

Nekateri klici funkcij uporabljajo unsafe, ker so te funkcije na voljo takšne, kot so, brez prilagajanja konvencijam Rust. Zaboj je zasnovan po istem principu. libc, ki služi kot osnovni zaboj za dostop do libc in se uporablja kot osnova za gradnjo knjižnic z varnim vmesnikom.


Projekt je nastal v okviru Projekt metapodatkov Win32, ki je zasnovan tako, da olajša ustvarjanje API-jev za različne programske jezike. Druga knjižnica, ki je nastala na podlagi Projekta metapodatkov v prvi fazi projekta – C#/Win32. Microsoft je tudi napovedal začetek del na različica za C++, ki uporablja sodoben stil jezika.

Vir: linux.org.ru