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