Microsoft je objavio službenu Rust biblioteku za Windows API

Knjižnica je dizajnirana kao Rust sanduk pod licencom MIT-a, koja se može koristiti ovako:

[ovisnosti] prozori = "0.2.1"

[ovisnosti izgradnje] windows = "0.2.1"

Nakon toga, u build.rs skripti za izgradnju, možete generirati module koji su potrebni za vašu aplikaciju:

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

Dokumentacija o dostupnim modulima objavljena je na docs.rs.

Primjer koda:

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

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

fn main() -> windows::Result<()> {
neka doc = XmlDocument::new()?;
doc.load_xml(" Pozdrav svijete ")?;

neka root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "zdravo svijetu");

nesigurno {
neka događaj = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

PostaviDogađaj(događaj).ok()?;
WaitForSingleObject(event, 0);
CloseHandle(event).ok()?;
}

U redu(())
}

Neki pozivi funkcija koriste nesigurno jer su te funkcije dostupne takve jesu, bez prilagodbe Rust konvencijama. Sanduk je dizajniran na istom principu. libc, koji služi kao osnovni okvir za pristup libc-u i koristi se kao osnova za izgradnju knjižnica sa sigurnim sučeljem.


Projekt je nastao u okviru Projekt metapodataka Win32, koji je dizajniran da olakša stvaranje API-ja za različite programske jezike. Druga biblioteka, koja je nastala na temelju Projekta metapodataka u prvoj fazi projekta - C#/Win32. Microsoft je također najavio početak rada na verzija za C++, koji koristi moderan stil jezika.

Izvor: linux.org.ru