Microsoft hefur gefið út opinbera Rust bókasafnið fyrir Windows API

Bókasafnið er hannað sem Ryð rimlakassi undir MIT leyfinu, sem hægt er að nota svona:

[ósjálfstæði] windows = "0.2.1"

[byggingarháðar] windows = "0.2.1"

Eftir þetta, í build.rs smíðahandritinu, geturðu búið til einingarnar sem þarf fyrir forritið þitt:

fn main() {
gluggar::byggja!(
windows::gögn::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

Skjöl um tiltækar einingar eru birtar á docs.rs.

Dæmi um kóða:

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

notaðu bindingar::{
windows::gögn::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(" Halló heimur ")?;

láta rót = doc.document_element()?;
fullyrða!(root.node_name()? == "html");
fullyrða!(root.inner_text()? == "halló heimur");

óöruggt {
láta atburð = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(atburður).ok()?;
WaitForSingleObject(atburður, 0);
CloseHandle(atburður).ok()?;
}

Allt í lagi(())
}

Sum aðgerðarköll nota óörugg vegna þess að þessar aðgerðir eru veittar eins og þær eru, án þess að aðlaga þær að Rust venjum. Kassi er hannaður á sömu reglu. libc, sem þjónar sem grunngrind til að fá aðgang að libc og er notað sem grunnur til að byggja bókasöfn með öruggu viðmóti.


Verkefnið varð til innan rammans Win32 lýsigagnaverkefni, sem er hannað til að gera það auðveldara að búa til API fyrir mismunandi forritunarmál. Annað bókasafnið, sem var búið til út frá lýsigagnaverkefninu í fyrsta áfanga verkefnisins - C#/Win32. Microsoft tilkynnti einnig um upphaf vinnu við útgáfa fyrir C++, sem notar nútímalegan tungumálsstíl.

Heimild: linux.org.ru