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

Knižnica je vytvorená ako Rust crate pod MIT licenciou, ktorú môžete použiť takto:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

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

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

Dokumentácia k dostupným modulom je zverejnená na docs.rs.

Príklad kódu:

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

Pre niektoré volania funkcií sa používa unsafe, pretože tieto funkcie sú poskytované tak, ako sú, bez prispôsobenia ich konvenciám Rust. Rovnako je navrhnutý crate libc, ktorý slúži ako základný crate pre prístup k libc a používa sa ako základ pre budovanie knižníc s bezpečným rozhraním.


Projekt bol vytvorený v rámci Win32 Metadata Project, ktorý má uľahčiť vytváranie API pre rôzne programovacie jazyky. Druhá knižnica, ktorá bola vytvorená na základe Metadata Project v prvej fáze projektu — C#/Win32. Taktiež Microsoft oznámil začiatok práce na verzii pre C++, ktorá používa moderný štýl jazyka.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster