Microsoft har frigivet det officielle Rust-bibliotek til Windows API

Biblioteket er designet som en rustkasse under MIT-licensen, som kan bruges på denne måde:

[afhængigheder] windows = "0.2.1"

[bygningsafhængigheder] windows = "0.2.1"

Herefter kan du i build.rs build-scriptet generere de moduler, der er nødvendige for din applikation:

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

Dokumentation om tilgængelige moduler offentliggøres på docs.rs.

Eksempelkode:

mod bindinger {
::windows::include_bindings!();
}

brug bindinger::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programmering::CloseHandle,
};

fn main() -> windows::Resultat {
lad doc = XmlDocument::new()?;
doc.load_xml("hej verden")?;

lad root = doc.document_element()?;
hævde!(root.node_name()? == "html");
hævde!(root.inner_text()? == "hej verden");

usikker {
lad begivenhed = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(hændelse).ok()?;
WaitForSingleObject(hændelse, 0);
CloseHandle(hændelse).ok()?;
}

Okay(())
}

Nogle funktionskald bruger usikre, fordi disse funktioner leveres som de er uden at tilpasse dem til Rust-konventioner. Kassen er designet efter samme princip. libc, der fungerer som en grundlæggende kasse til adgang til libc og bruges som grundlag for at bygge biblioteker med en sikker grænseflade.


Projektet blev til inden for rammerne Win32 metadataprojekt, som er designet til at gøre det nemmere at oprette API'er til forskellige programmeringssprog. Det andet bibliotek, som blev oprettet på baggrund af Metadataprojektet i projektets første fase - C#/Win32. Microsoft annoncerede også starten på arbejdet med version til C++, som bruger en moderne sprogstil.

Kilde: linux.org.ru