Microsoft imetoa maktaba rasmi ya Rust ya API ya Windows

Maktaba imeundwa kama kreti ya kutu chini ya Leseni ya MIT, ambayo inaweza kutumika kama hii:

[tegemezi] windows = "0.2.1"

[utegemezi wa kujenga] windows = "0.2.1"

Baada ya hayo, katika build.rs build hati, unaweza kutoa moduli zinazohitajika kwa programu yako:

fn kuu() {
madirisha::jenga!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::programming_windows::Funga Kishiko
);
}

Hati kuhusu moduli zinazopatikana huchapishwa kwenye hati.rs.

Msimbo wa sampuli:

vifungo vya mod {
::madirisha::jumuisha_bindings!();
}

tumia vifungo::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::programming_windows::Funga Kishiko,
};

fn kuu() -> windows::Result {
let doc = XmlDocument::new()?;
doc.load_xml("hujambo ulimwengu")?;

let root = doc.document_element()?;
kudai!(root.node_name()? == "html");
kudai!(root.inner_text()? == "hello world");

si salama {
acha tukio = CreateEventW(
std::ptr::null_mut(),
kweli.katika(),
uongo.katika(),
std::ptr::null(),
);

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

Sawa(())
}

Baadhi ya simu za chaguo za kukokotoa hutumia zisizo salama kwa sababu vitendakazi hivi vimetolewa kama ilivyo, bila kuzirekebisha kwa mikusanyiko ya Rust. Crate imeundwa kwa kanuni sawa. libc, ambayo hutumika kama kreti ya msingi ya kufikia libc na inatumika kama msingi wa kujenga maktaba zilizo na kiolesura salama.


Mradi huo uliundwa ndani ya mfumo Mradi wa Metadata wa Win32, ambayo imeundwa ili kurahisisha kuunda API za lugha tofauti za programu. Maktaba ya pili, ambayo iliundwa kwa msingi wa Mradi wa Metadata katika awamu ya kwanza ya mradi - C#/Shinda32. Microsoft pia ilitangaza kuanza kwa kazi toleo la C++, ambayo hutumia mtindo wa kisasa wa lugha.

Chanzo: linux.org.ru