Microsoft ha rilasciato una libreria ufficiale Rust per il Windows API.

La biblioteca è strutturata come un Rust crate con licenza MIT, che può essere utilizzato in questo modo:

[dipendenze]
windows = "0.2.1"

[dipendenze di build]
windows = "0.2.1"

Dopo questo, nel file di script di build build.rs si possono generare i moduli necessari per la tua applicazione:

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

La documentazione sui moduli disponibili è pubblicata su docs.rs.

Esempio di codice:

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>ciao mondo</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(())
}

Per alcune chiamate a funzioni si utilizza unsafe, poiché queste funzioni sono fornite così come sono, senza adattarle alle convenzioni di Rust. La crate libc, che funge da crate di base per l'accesso a libc ed è utilizzata come base per costruire librerie con interfacce sicure.


Il progetto è stato creato nell'ambito del Win32 Metadata Project, il quale ha l'obiettivo di semplificare la creazione di API per diversi linguaggi di programmazione. La seconda libreria, creata sulla base del Metadata Project nella prima fase del progetto — C#/Win32. Microsoft ha anche annunciato l'inizio dei lavori su una versione per C++, che utilizza uno stile di linguaggio moderno.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster