Microsoft hat die offizielle Rust-Bibliothek für die Windows-API veröffentlicht

Die Bibliothek ist als Rust-Kiste unter der MIT-Lizenz konzipiert, die wie folgt verwendet werden kann:

[Abhängigkeiten] Windows = „0.2.1“

[build-dependencies] windows = „0.2.1“

Anschließend können Sie im Build-Skript build.rs die Module generieren, die für Ihre Anwendung benötigt werden:

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

Dokumentation zu verfügbaren Modulen wird auf veröffentlicht docs.rs.

ример кода:

Mod-Bindungen {
::windows::include_bindings!();
}

Bindungen verwenden::{
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(" Hallo Welt ")?;

let root = doc.document_element(?);
behaupten!(root.node_name()? == "html");
behaupten!(root.inner_text()? == "Hallo Welt");

unsicher {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(event).ok(?);
WaitForSingleObject(event, 0);
CloseHandle(event).ok(?);
}

OK(())
}

Einige Funktionsaufrufe verwenden unsicher, da diese Funktionen unverändert bereitgestellt werden, ohne sie an die Rust-Konventionen anzupassen. Crate ist nach dem gleichen Prinzip konzipiert. libc, das als Basis für den Zugriff auf libc dient und als Grundlage für den Aufbau von Bibliotheken mit einer sicheren Schnittstelle dient.


Das Projekt entstand im Rahmen Win32-Metadatenprojekt, das die Erstellung von APIs für verschiedene Programmiersprachen erleichtern soll. Die zweite Bibliothek, die auf Basis des Metadatenprojekts in der ersten Projektphase erstellt wurde - C#/Win32. Auch Microsoft gab den Beginn der Arbeiten bekannt Version für C++, das einen modernen Sprachstil verwendet.

Source: linux.org.ru