Microsoft пусна официална Rust библиотека за Windows API

Библиотеката е оформена като Rust crate под MIT License и може да се използва по следния начин:

[dependencies]
windows = "0.2.1"

[build-dependencies]
windows = "0.2.1"

След това в скрипта за изграждане build.rs можете да генерирате модулите, от които имате нужда за вашето приложение:

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

Документацията за наличните модули е публикувана на docs.rs.

Примерен код:

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

use 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>здравей свят</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(())
}

За някои извиквания на функции се използва unsafe, тъй като тези функции се предоставят както са, без адаптиране към конвенциалните изисквания на Rust. По същия принцип е изградена crate libc, която служи като основен crate за достъп до libc и се използва за изграждане на библиотеки с безопасен интерфейс.


Проектът е създаден в рамките на Win32 Metadata Project, който цели да улесни създаването на API за различни езици за програмиране. Втората библиотека, която е създадена на базата на Metadata Project в първата фаза на проекта — C#/Win32. Microsoft също обяви започването на работа по версия за C++, която използва съвременен стил на езика.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster