ืžื™ืงืจื•ืกื•ืคื˜ ืคืจืกืžื” ืืช ืกืคืจื™ื™ืช Rust ื”ืจืฉืžื™ืช ืขื‘ื•ืจ ื”-API ืฉืœ Windows

ื”ืกืคืจื™ื™ื” ืžืขื•ืฆื‘ืช ื›ืืจื’ื– ื—ืœื•ื“ื” ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT, ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื›ืš:

[ืชืœื•ืช] windows = "0.2.1"

[ืชืœื•ืช ื‘ื‘ื ื™ื™ื”] windows = "0.2.1"

ืœืื—ืจ ืžื›ืŸ, ื‘ืกืงืจื™ืคื˜ build.rs, ืชื•ื›ืœ ืœื™ืฆื•ืจ ืืช ื”ืžื•ื“ื•ืœื™ื ื”ื“ืจื•ืฉื™ื ืœื™ื™ืฉื•ื ืฉืœืš:

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

ืชื™ืขื•ื“ ืขืœ ืžื•ื“ื•ืœื™ื ื–ืžื™ื ื™ื ืžืชืคืจืกื ื‘ docs.rs.

ืงื•ื“ ืœื“ื•ื’ืžื”:

ื›ืจื™ื›ื•ืช mod {
::windows::include_bindings!();
}

ื”ืฉืชืžืฉ ื‘ื›ืจื™ื›ื•ืช::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" ืฉืœื•ื ืขื•ืœื ")?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "ืฉืœื•ื ืขื•ืœื");

ืœื ื‘ื˜ื•ื— {
ืชืŸ ืื™ืจื•ืข = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

ื‘ืกื“ืจ(())
}

ืงืจื™ืื•ืช ืคื•ื ืงืฆื™ื•ืช ืžืกื•ื™ืžื•ืช ืžืฉืชืžืฉื•ืช ื‘ืžืฆื‘ ืœื ื‘ื˜ื•ื— ืžื›ื™ื•ื•ืŸ ืฉืคื•ื ืงืฆื™ื•ืช ืืœื• ืžืกื•ืคืงื•ืช ื›ืคื™ ืฉื”ืŸ, ืžื‘ืœื™ ืœื”ืชืื™ื ืื•ืชืŸ ืœืžื•ืกื›ืžื•ืช Rust. ืืจื’ื– ืžืชื•ื›ื ืŸ ืขืœ ืื•ืชื• ืขื™ืงืจื•ืŸ. libc, ื”ืžืฉืžืฉ ื›ืืจื’ื– ื‘ืกื™ืกื™ ืœื’ื™ืฉื” ืœ-libc ื•ืžืฉืžืฉ ื›ื‘ืกื™ืก ืœื‘ื ื™ื™ืช ืกืคืจื™ื•ืช ืขื ืžืžืฉืง ืžืื•ื‘ื˜ื—.


ื”ืคืจื•ื™ืงื˜ ื ื•ืฆืจ ื‘ืžืกื’ืจืช Win32 Metadata Project, ืฉื ื•ืขื“ ืœื”ืงืœ ืขืœ ื™ืฆื™ืจืช ืžืžืฉืงื™ API ืขื‘ื•ืจ ืฉืคื•ืช ืชื›ื ื•ืช ืฉื•ื ื•ืช. ื”ืกืคืจื™ื™ื” ื”ืฉื ื™ื™ื”, ืฉื ื•ืฆืจื” ืขืœ ื‘ืกื™ืก ืคืจื•ื™ืงื˜ Metadata ื‘ืฉืœื‘ ื”ืจืืฉื•ืŸ ืฉืœ ื”ืคืจื•ื™ืงื˜ - C#/Win32. ืžื™ืงืจื•ืกื•ืคื˜ ื’ื ื”ื•ื“ื™ืขื” ืขืœ ืชื—ื™ืœืช ื”ืขื‘ื•ื“ื” ืขืœ ื’ืจืกื” ืขื‘ื•ืจ C++, ื”ืžืฉืชืžืฉืช ื‘ืกื’ื ื•ืŸ ืžื•ื“ืจื ื™ ืฉืœ ืฉืคื”.

ืžืงื•ืจ: linux.org.ru