Microsoft je objavio službenu Rust biblioteku za Windows API

Knjižnica je oblikovana kot Rust crate pod MIT licenco, ki jo je mogoče uporabiti tako:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

Po tem lahko v skriptu za gradnjo build.rs ustvarite tiste module, ki jih vaše aplikacije potrebujejo:

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

Dokumentacija o razpoložljivih modulih je objavljena na docs.rs.

Пример кода:

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(())
}

Za nekatere klice funkcij se uporablja unsafe, saj te funkcije zagotavljajo takšne, kot so, brez prilagajanja njihovim konvencijam Rust. Po istem načelu je zasnovana tudi knjižnica libc, ki služi kot osnovna knjižnica za dostop do libc in se uporablja kot osnova za gradnjo knjižnic z varnim vmesnikom.


Projekt je bil ustvarjen v okviru Win32 Metadata Project, katere cilj je olajšati ustvarjanje API-jev za različne programske jezike. Druga knjižnica, ki je bila ustvarjena na podlagi Metadata Project v prvem obsegu projekta — C#/Win32. Microsoft je prav tako napovedal začetek dela na različici za C++, ki uporablja sodoben slog jezika.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster