Microsoft te pibliye bibliyotèk ofisyèl Rust pou API Windows

Bibliyotèk la fèt kòm yon kès Rust anba Lisans MIT, ki ka itilize konsa:

[Depandans] fenèt = "0.2.1"

[build-dependencies] windows = "0.2.1"

Apre sa, nan script bati build.rs, ou ka jenere modil ki nesesè pou aplikasyon w lan:

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

Dokimantasyon sou modil ki disponib yo pibliye sou docs.rs.

Egzanp kòd:

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

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

fn main() -> windows::Result<()> {
kite doc = XmlDocument::new()?;
doc.load_xml(" bonjou monn ")?;

kite rasin = doc.document_element()?;
afime!(root.node_name()? == "html");
assert!(root.inner_text()? == "bonjou mond");

ensekirite {
kite evènman = CreateEventW (
std::ptr::null_mut(),
vre.nan(),
false.into(),
std::ptr::null(),
);

SetEvent(evènman).ok()?;
WaitForSingleObject(evènman, 0);
CloseHandle(evènman).ok()?;
}

Oke(())
}

Gen kèk apèl fonksyon ki sèvi ak ensekirite paske fonksyon sa yo bay jan yo ye, san yo pa adapte yo ak konvansyon Rust. Kès fèt sou menm prensip la. libc, ki sèvi kòm yon kès debaz pou jwenn aksè nan libc epi ki itilize kòm yon baz pou bati bibliyotèk ak yon koòdone an sekirite.


Pwojè a te kreye nan kad la Win32 Metadata Pwojè, ki fèt pou fè li pi fasil pou kreye API pou diferan lang pwogramasyon. Dezyèm bibliyotèk la, ki te kreye baze sou Pwojè Metadata nan premye faz pwojè a - C#/Win32. Microsoft te anonse tou kòmansman travay vèsyon pou C++, ki sèvi ak yon style modèn nan lang.

Sous: linux.org.ru