Microsoft on välja andnud Windowsi API jaoks ametliku Rust teegi

Teek on kujundatud MIT-i litsentsi all oleva roostekastina, mida saab kasutada järgmiselt:

[sõltuvused] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Pärast seda saate build.rs-i ehitusskriptis genereerida oma rakenduse jaoks vajalikud moodulid:

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

Saadaolevate moodulite dokumentatsioon on avaldatud docs.rs.

Näidiskood:

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

kasuta sidemeid::{
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(" Tere, Maailm ")?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "tere maailm");

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

SetEvent(sündmus).ok()?;
WaitForSingleObject(sündmus, 0);
CloseHandle(sündmus).ok()?;
}

Okei(())
}

Mõned funktsioonikutsed kasutavad ebaturvalist, kuna need funktsioonid on saadaval nii, nagu nad on, ilma neid Rusti tavadega kohandamata. Kast on kujundatud samal põhimõttel. libc, mis toimib libc-le juurdepääsu põhikastina ja seda kasutatakse turvalise liidesega teekide loomise alusena.


Projekt loodi selle raames Win32 metaandmete projekt, mis on mõeldud erinevate programmeerimiskeelte jaoks API-de loomise hõlbustamiseks. Teine teek, mis loodi metaandmete projekti põhjal projekti esimeses etapis - C#/Win32. Microsoft teatas ka töö alustamisest versioon C++ jaoks, mis kasutab tänapäevast keelelaadi.

Allikas: linux.org.ru