Microsoft on välja andnud ametliku Rust teegi Windows API jaoks

Biblioteek on vormistatud Rust crate'ina, mis on litsentseeritud MIT litsentsiga, ja seda saab kasutada nii:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

Pärast seda saab build.rs koostamisüsteemis genereerida vajalikud moodulid teie rakendusele:

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

Saadavalolevate moodulite dokumentatsioon on avaldatud docs.rs.

Koodinäide:

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

kasutada 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(())
}

Mõnedes funktsioonikutsungites kasutatakse unsafe, kuna need funktsioonid pakutakse sellisena, nagu need on, kohandamata neid Rusti konventsioonide järgi. Samas põhimõttes põhineb crate libc, mis teenib põhi crate'ina juurdepääsu libc'ile ja kasutatakse turvalise liidese raamatute ehitamiseks.


Projekt on loodud Win32 Metadata Project, mis on mõeldud API lihtsustamiseks erinevates programmeerimiskeeles. Teine teek, mis loodi Metadata Project'i põhjal projekti esimeses etapis — C#/Win32. Samuti teatas Microsoft, et on alustanud töödega C++ versiooni, mis kasutab kaasaegse keele stiili.

Allikas: linux.org.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster