Microsoft hat de offisjele Rust-bibleteek frijlitten foar de Windows API

De bibleteek is ûntworpen as in Rust-krat ûnder de MIT-lisinsje, dy't sa kin wurde brûkt:

[ôfhinklikens] windows = "0.2.1"

[build-ôfhinklikens] windows = "0.2.1"

Hjirnei kinne jo yn it build.rs build skript de modules generearje dy't nedich binne foar jo applikaasje:

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

Dokumintaasje oer beskikbere modules wurdt publisearre op docs.rs.

Foarbyld fan koade:

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

brûk bindingen::{
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(" Hallo wrâld ")?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hallo wrâld");

ûnfeilich {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

Ok(())
}

Guon funksje calls brûke ûnfeilich omdat dizze funksjes wurde foarsjoen as is, sûnder oanpasse se oan Rust konvinsjes. Crate is ûntwurpen op itselde prinsipe. libc, dy't tsjinnet as in basiskrat foar tagong ta libc en wurdt brûkt as basis foar it bouwen fan biblioteken mei in feilige ynterface.


It projekt is makke yn it ramt Win32 Metadata Project, dy't ûntwurpen is om it makliker te meitsjen om API's foar ferskate programmeartalen te meitsjen. De twadde bibleteek, dy't waard makke basearre op it Metadata Project yn 'e earste faze fan it projekt - C#/Win32. Microsoft kundige ek it begjin fan wurk oan ferzje foar C ++, dy't in moderne taalstyl brûkt.

Boarne: linux.org.ru