Biblioteka została zaprojektowana jako skrzynia Rust na licencji MIT, której można używać w następujący sposób:
[zależności] okna = „0.2.1” [zależności kompilacji] Windows = „0.2.1”Następnie w skrypcie kompilacji build.rs możesz wygenerować moduły potrzebne dla Twojej aplikacji:
fn główna() {
Windows::kompiluj!(
Windows::data::xml::dom::*
Windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
Windows::win32::windows_programming::CloseHandle
);
}
Dokumentacja dostępnych modułów opublikowana jest na stronie dokumenty.rs.
Przykładowy kod:
powiązania modów {
::windows::include_bindings!();
}
użyj powiązań::{
Windows::data::xml::dom::*,
Windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
Windows::win32::windows_programming::CloseHandle,
};
fn main() -> Windows::Wynik<()> {
niech doc = XmlDocument::new()?;
dokument.load_xml(" Witaj świecie ")?;
niech root = dokument.document_element()?;
Assert!(root.node_name()? == "html");
Assert!(root.inner_text()? == "Witaj, świecie");
niebezpieczny {
niech zdarzenie = CreateEventW(
std::ptr::null_mut(),
prawda.do(),
fałsz.do(),
std::ptr::null(),
);
SetEvent(zdarzenie).ok()?;
WaitForSingleObject(zdarzenie, 0);
CloseHandle(zdarzenie).ok()?;
}
OK(())
}
Niektóre wywołania funkcji używają unsafe, ponieważ te funkcje są dostarczane w niezmienionej postaci, bez dostosowywania ich do konwencji Rusta. Skrzynia została zaprojektowana na tej samej zasadzie. libc, który służy jako podstawowa skrzynka dostępu do biblioteki libc i służy jako podstawa do budowania bibliotek z bezpiecznym interfejsem.
Projekt powstał w ramach Projekt metadanych Win32, który ma na celu ułatwienie tworzenia interfejsów API dla różnych języków programowania. Druga biblioteka, która powstała w oparciu o Metadata Project w pierwszej fazie projektu - C#/Win32. Microsoft ogłosił także rozpoczęcie prac nad wersja dla C++, który wykorzystuje nowoczesny styl języka.
Źródło: linux.org.ru