Microsoft wis ngeculake perpustakaan Rust resmi kanggo API Windows

Perpustakaan iki dirancang minangka peti Rust miturut Lisensi MIT, sing bisa digunakake kaya iki:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Sawise iki, ing skrip mbangun build.rs, sampeyan bisa ngasilake modul sing dibutuhake kanggo aplikasi sampeyan:

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

Dokumentasi babagan modul kasedhiya diterbitake ing docs.rs.

Kode sampel:

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

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

fn main() -> windows::Hasil<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" hello donya ")?;

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

ora aman {
let event = CreateEventW(
std::ptr::null_mut(),
bener.ke(),
false.into(),
std::ptr::null(),
);

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

Oke(())
}

Sawetara panggilan fungsi nggunakake ora aman amarga fungsi iki kasedhiya, tanpa ngganti menyang konvènsi Rust. Crate dirancang ing prinsip sing padha. libc, sing dadi peti dhasar kanggo ngakses libc lan digunakake minangka basis kanggo mbangun perpustakaan kanthi antarmuka sing aman.


Proyek kasebut digawe ing kerangka Proyek Metadata Win32, sing dirancang kanggo nggawe API luwih gampang kanggo macem-macem basa program. Pustaka kapindho, sing digawe adhedhasar Proyek Metadata ing tahap pertama proyek kasebut - C#/Win32. Microsoft uga ngumumake wiwitan karya versi kanggo C++, sing nggunakake gaya basa modern.

Source: linux.org.ru