Microsoft on julkaissut virallisen Rust-kirjaston Windows API:lle

Kirjasto on suunniteltu MIT-lisenssin alaisena ruostelaatikoksi, jota voidaan käyttää seuraavasti:

[riippuvuudet] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Tämän jälkeen voit luoda build.rs-koontiskriptissä sovelluksellesi tarvittavat moduulit:

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

Dokumentaatio saatavilla olevista moduuleista on julkaistu docs.rs.

Koodiesimerkki:

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

käytä sidoksia::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
anna doc = XmlDocument::new()?;
doc.load_xml(" Hei maailma ")?;

anna root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hei maailma");

vaarallinen {
anna tapahtuma = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

Ok (())
}

Jotkut funktiokutsut käyttävät epäturvallista, koska nämä toiminnot tarjotaan sellaisenaan ilman, että niitä mukautetaan ruosteen käytäntöihin. Crate on suunniteltu samalla periaatteella. libc, joka toimii peruslaatikona libc:n käyttämiselle ja jota käytetään perustana rakennettaessa kirjastoja suojatulla käyttöliittymällä.


Projekti luotiin sen puitteissa Win32 metatietoprojekti, joka on suunniteltu helpottamaan API:iden luomista eri ohjelmointikielille. Toinen kirjasto, joka luotiin Metadata Projectin pohjalta projektin ensimmäisessä vaiheessa - C#/Win32. Microsoft ilmoitti myös työn aloittamisesta versio C++:lle, joka käyttää modernia kielen tyyliä.

Lähde: linux.org.ru