Microsoft vydal oficiálnu knižnicu Rust pre Windows API

Knižnica je navrhnutá ako hrdzavá prepravka pod licenciou MIT, ktorú možno použiť takto:

[závislosti] okná = "0.2.1"

[build-dependencies] windows = "0.2.1"

Potom môžete v zostavovacom skripte build.rs vygenerovať moduly, ktoré sú potrebné pre vašu aplikáciu:

fnmain() {
okná::stavať!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

Dokumentácia o dostupných moduloch je zverejnená na docs.rs.

Priklad kód:

mod väzby {
::windows::include_bindings!();
}

použite väzby::{
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(" ahoj svet ")?;

nech root = doc.prvok_dokumentu()?;
tvrdiť!(root.názov_uzla()? == "html");
tvrdiť!(root.inner_text()? == "ahoj svet");

nebezpečný {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

dobre (())
}

Niektoré volania funkcií sú nebezpečné, pretože tieto funkcie sú poskytované tak, ako sú, bez ich prispôsobenia konvenciám Rustu. Prepravka je navrhnutá na rovnakom princípe. libc, ktorý slúži ako základná schránka na prístup k libc a používa sa ako základ pre budovanie knižníc so zabezpečeným rozhraním.


Projekt vznikol v rámci Projekt metaúdajov Win32, ktorý je navrhnutý tak, aby uľahčil vytváranie API pre rôzne programovacie jazyky. Druhá knižnica, ktorá bola vytvorená na základe projektu Metadata v prvej fáze projektu - C#/Win32. Microsoft tiež oznámil začiatok prác na verzia pre C++, ktorá využíva moderný štýl jazyka.

Zdroj: linux.org.ru