Microsoft a lansat biblioteca oficială Rust pentru API-ul Windows

Biblioteca este concepută ca o ladă Rust sub licența MIT, care poate fi utilizată astfel:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

După aceasta, în scriptul de compilare build.rs, puteți genera modulele necesare pentru aplicația dvs.:

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

Documentația despre modulele disponibile este publicată pe docs.rs.

Cod simplu:

legături mod {
::windows::include_bindings!();
}

utilizați legături::{
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(" Salut Lume ")?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == „bună lume”);

nesigur {
lasă evenimentul = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

Bine(())
}

Unele apeluri de funcții folosesc nesigur, deoarece aceste funcții sunt furnizate ca atare, fără a le adapta la convențiile Rust. Crate este proiectat pe același principiu. libc, care servește ca o cutie de bază pentru accesarea libc și este folosită ca bază pentru construirea de biblioteci cu o interfață securizată.


Proiectul a fost creat în cadrul Proiectul de metadate Win32, care este conceput pentru a facilita crearea de API-uri pentru diferite limbaje de programare. A doua bibliotecă, care a fost creată pe baza Proiectului Metadate în prima fază a proiectului - C#/Win32. Microsoft a anunțat, de asemenea, începerea lucrărilor la versiune pentru C++, care folosește un stil modern de limbaj.

Sursa: linux.org.ru