Microsoft je objavio službenu Rust biblioteku za Windows API

Biblioteka je dizajnirana kao Rust sanduk pod MIT licencom, koja se može koristiti na sljedeći način:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

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

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

Dokumentacija o dostupnim modulima je objavljena na docs.rs.

Primjer koda:

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

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

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

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

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

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

Uredu(())
}

Neki pozivi funkcija koriste nesigurno jer se ove funkcije pružaju takve kakve jesu, bez prilagođavanja Rust konvencijama. Kutija je dizajnirana po istom principu. libc, koji služi kao osnovni sanduk za pristup libc-u i koristi se kao osnova za izgradnju biblioteka sa sigurnim interfejsom.


Projekat je kreiran u okviru Win32 projekat metapodataka, koji je dizajniran da olakša kreiranje API-ja za različite programske jezike. Druga biblioteka, koja je nastala na osnovu 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