Microsoft a lansat oficial o bibliotecă Rust pentru API-ul Windows

Biblioteca este formată ca un crate Rust sub Licența MIT, pe care o poți folosi astfel:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

După aceasta, în scriptul de construcție build.rs poți genera modulele necesare pentru aplicația ta:

fn main() {
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.

Exemplu de cod:

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

use bindings::{
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("<html>hello world</html>")?;

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

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

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

Ok(())
}

Pentru unele apeluri de funcții se folosește unsafe, deoarece aceste funcții sunt furnizate așa cum sunt, fără a le adapta la convențiile Rust. Crate-ul este structurat în același mod libc, care servește ca crate de bază pentru acces la libc și este folosit ca bază pentru construirea bibliotecilor cu interfețe sigure.


Proiectul a fost creat în cadrul Win32 Metadata Project, care are ca scop facilitarea creării API-urilor pentru diferite limbaje de programare. A doua bibliotecă creată pe baza Metadata Project în prima fază a proiectului este C#/Win32. Microsoft a anunțat de asemenea începutul lucrului la versiunea pentru C++, care utilizează stilul modern al limbajului.

Sursa: linux.org.ru

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster