A Microsoft kiadta a hivatalos Rust könyvtárat a Windows API-hoz

A könyvtárat az MIT License alá tartozó Rust ládaként tervezték, amely így használható:

[függőségek] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Ezt követően a build.rs build szkriptben előállíthatja az alkalmazásához szükséges modulokat:

fn main() {
ablakok::építs!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

Az elérhető modulokról szóló dokumentációt a következő napon teszik közzé docs.rs.

Minta kód:

mod kötések {
::windows::include_bindings!();
}

kötések használata::{
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(" Helló Világ ")?;

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

nem biztonságos {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(esemény).ok()?;
WaitForSingleObject(esemény, 0);
CloseHandle(esemény).ok()?;
}

Rendben(())
}

Egyes függvényhívások nem biztonságosak, mert ezek a függvények úgy vannak biztosítva, ahogy vannak, anélkül, hogy a Rust konvenciókhoz igazítanák őket. A láda ugyanazon az elven készült. libc, amely alapvető ládaként szolgál a libc eléréséhez, és alapul szolgál a biztonságos felülettel rendelkező könyvtárak felépítéséhez.


A projekt keretein belül jött létre Win32 metaadatprojekt, amelynek célja, hogy megkönnyítse az API-k létrehozását a különböző programozási nyelvekhez. A második könyvtár, amely a projekt első fázisában a Metadata Project alapján készült - C#/Win32. A Microsoft bejelentette a munka megkezdését is verzió C++-hoz, amely modern nyelvi stílust használ.

Forrás: linux.org.ru