Microsoft har udgivet et officielt Rust-bibliotek til Windows API

Biblioteket er udformet som et Rust crate under MIT License, som kan bruges sådan her:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

Derefter kan du i byggescriptet build.rs generere de moduler, der er nødvendige for din applikation:

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

Dokumentationen for de tilgængelige moduler er offentliggjort på docs.rs.

Kodeeksempel:

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

For nogle funktionsopkald anvendes unsafe, da disse funktioner leveres, som de er, uden at tilpasse dem til Rusts konventioner. På samme måde fungerer crate libc, som fungerer som basis crate for adgang til libc og bruges som grundlag for opbygning af biblioteker med sikre grænseflader.


Projektet er skabt som en del af Win32 Metadata Project, som har til formål at gøre oprettelsen af API'er til forskellige programmeringssprog lettere. Det andet bibliotek, der blev skabt på basis af Metadata Project i projektets første fase — C#/Win32. Microsoft har også annonceret, at de arbejder på en version til C++, som bruger den moderne sprogstil.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster