Microsoft heeft de officiële Rust-bibliotheek voor de Windows API vrijgegeven

De bibliotheek is ontworpen als een Rust-krat onder de MIT-licentie, die als volgt kan worden gebruikt:

[afhankelijkheden] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Hierna kunt u in het build.rs build-script de modules genereren die nodig zijn voor uw applicatie:

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

Documentatie over beschikbare modules is gepubliceerd op docs.rs.

Voorbeeldcode:

mod-bindingen {
::windows::include_bindings!();
}

gebruik bindingen::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Resultaat<()> {
laat doc = XmlDocument::new()?;
doc.load_xml(" Hallo Wereld ")?;

laat root = doc.document_element()?;
beweren!(root.node_name()? == "html");
beweren!(root.inner_text()? == "Hallo wereld");

onveilig {
laat gebeurtenis = CreateEventW(
std::ptr::null_mut(),
waar.into(),
false.into(),
std::ptr::null(),
);

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

OK(())
}

Sommige functieaanroepen gebruiken onveilig omdat deze functies worden geleverd zoals ze zijn, zonder ze aan te passen aan Rust-conventies. Crate is ontworpen volgens hetzelfde principe. libc, dat dient als basiskrat voor toegang tot libc en wordt gebruikt als basis voor het bouwen van bibliotheken met een beveiligde interface.


Binnen het raamwerk is het project tot stand gekomen Win32 Metadata-project, dat is ontworpen om het gemakkelijker te maken om API's voor verschillende programmeertalen te maken. De tweede bibliotheek, die is gemaakt op basis van het Metadata Project in de eerste fase van het project - C#/Win32. Microsoft kondigde ook de start van de werkzaamheden aan versie voor C++, die een moderne taalstijl gebruikt.

Bron: linux.org.ru