A könyvtár Rust crate-ként van megvalósítva MIT Licenc alatt, amelyet így lehet használni:
[dependencies]
windows = "0.2.1"
[build-dependencies]
windows = "0.2.1"
Ezt követően a build.rs összeállítási szkriptben generálhatók a szükséges modulok az alkalmazásához:
fn main() {
windows::build!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}
A rendelkezésre álló modulokról szóló dokumentáció elérhető itt: docs.rs.
Kódminta:
mod bindings {
::windows::include_bindings!();
}
use 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("<html>hello world</html>")?;
let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hello world");
unsafe {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);
SetEvent(event).ok()?;
WaitForSingleObject(event, 0);
CloseHandle(event).ok()?;
}
Ok(())
}
Bizonyos funkcióhívásokhoz unsafe használható, mivel ezek a funkciók úgy kerülnek megvalósításra, ahogy vannak, a Rust konvencióinak figyelembevétele nélkül. Ugyanez a principiált követi a crate, libcamely alap crate-ként szolgál a libc eléréséhez és a biztonságos interfészeket kínáló könyvtárak felépítési alapjaként használják.
A projekt a Win32 Metadata Projectkeretein belül jött létre, amelynek célja az API-k létrehozásának megkönnyítése különböző programozási nyelvekhez. A Metadata Project alapján, a projekt első fázisában, létrehozott második könyvtár — C#/Win32. A Microsoft außerdem bejelentette a C++ verzióval kapcsolatos munkálatok megkezdését,mely a nyelv modern stílusát használja.
Forrás: linux.org.ru
