Inilabas ng Microsoft ang opisyal na Rust library para sa Windows API

Ang library ay dinisenyo bilang isang Rust crate sa ilalim ng MIT License, na maaaring gamitin tulad nito:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Pagkatapos nito, sa build.rs build script, maaari kang bumuo ng mga module na kailangan para sa iyong aplikasyon:

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

Ang dokumentasyon tungkol sa mga magagamit na module ay nai-publish sa docs.rs.

Halimbawang code:

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

gumamit ng mga binding::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Resulta<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" kumusta mundo ")?;

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

hindi ligtas {
hayaan ang kaganapan = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

Ok(())
}

Ang ilang mga function call ay gumagamit ng hindi ligtas dahil ang mga function na ito ay ibinibigay kung ano man, nang hindi iniangkop ang mga ito sa mga Rust convention. Ang Crate ay dinisenyo sa parehong prinsipyo. libc, na nagsisilbing pangunahing crate para sa pag-access sa libc at ginagamit bilang batayan para sa pagbuo ng mga aklatan na may secure na interface.


Ang proyekto ay nilikha sa loob ng balangkas Win32 Metadata Project, na idinisenyo upang gawing mas madali ang paggawa ng mga API para sa iba't ibang programming language. Ang pangalawang library, na nilikha batay sa Metadata Project sa unang yugto ng proyekto - C#/Win32. Inihayag din ng Microsoft ang pagsisimula ng trabaho sa bersyon para sa C++, na gumagamit ng modernong istilo ng wika.

Pinagmulan: linux.org.ru