Microsoft wydał oficjalną bibliotekę Rust dla Windows API

Biblioteka jest zrealizowana jako crate Rust na licencji MIT, który można wykorzystać w ten sposób:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

Następnie w skrypcie budowy build.rs można wygenerować te moduły, które są potrzebne dla Twojej aplikacji:

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

Dokumentacja dotycząca dostępnych modułów została opublikowana na docs.rs.

Przykład kodu:

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

Niektóre wywołania funkcji używają unsafe, ponieważ funkcje te są dostarczane tak, jak są, nie dostosowując ich do konwencji Rust. W ten sam sposób działa crate libc, który służy jako bazowy crate do dostępu do libc i jest używany jako podstawowa baza do budowania bibliotek z bezpiecznym interfejsem.


Projekt został stworzony w ramach Win32 Metadata Project, który ma na celu uproszczenie tworzenia interfejsów API dla różnych języków programowania. Drugą biblioteką, która została stworzona na podstawie Metadata Project w pierwszej fazie projektu — C#/Win32. Microsoft ogłosiło również rozpoczęcie prac nad wersją dla C++, która wykorzystuje nowoczesny styl języka.

Źródło: linux.org.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster