Microsoft har slÀppt ett officiellt Rust-bibliotek för Windows API

Biblioteket Àr utformat som en Rust crate under MIT-licens, som kan anvÀndas sÄ hÀr:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

Efter detta kan vissa moduler genereras i byggscriptet build.rs som behövs för din applikation:

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

Dokumentationen om tillgÀngliga moduler publiceras pÄ docs.rs.

Exempel pÄ kod:

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>hej världen</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(())
}

För vissa funktionsanrop anvÀnds unsafe, eftersom dessa funktioner tillhandahÄlls som de Àr, utan anpassning till Rust-konventioner. PÄ samma sÀtt fungerar crate libc, som fungerar som en grundlÀggande crate för att fÄ tillgÄng till libc och anvÀnds som grund för att bygga bibliotek med sÀkra grÀnssnitt.


Projektet skapades inom ramen för Win32 Metadata Project, vilket syftar till att underlÀtta skapandet av API:er för olika programmeringssprÄk. Det andra biblioteket som skapades baserat pÄ Metadata Project under projektets första fas Àr C#/Win32. Microsoft har ocksÄ tillkÀnnagett början av arbetet med en version för C++, som anvÀnder ett modernt sprÄkformat.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster