Microsoft Windows API үчүн расмий Rust китепканасын чыгарды

Китепкана MIT лицензиясы боюнча Rust кутучасы катары иштелип чыккан, аны төмөнкүдөй колдонсо болот:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Андан кийин, build.rs build скриптинде сиз колдонмоңузга керектүү модулдарды түзө аласыз:

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

Жеткиликтүү модулдар жөнүндө документтер жарыяланды docs.rs.

Мисал код:

мод байланыштары {
::windows::include_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(" салам дүйнө ");

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "салам дүйнө");

кооптуу {
let event = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(event).ok()?;
WaitForSingleObject(окуя, 0);
CloseHandle(окуя).ok()?;
}

макул(())
}

Кээ бир функция чалуулары кооптуу колдонушат, анткени бул функциялар Rust конвенцияларына ыңгайлаштырылбастан, ошол бойдон берилген. Крат ошол эле принцип боюнча иштелип чыккан. libclibcке кирүү үчүн негизги куту катары кызмат кылат жана коопсуз интерфейси бар китепканаларды куруу үчүн негиз катары колдонулат.


Долбоор алкагында түзүлгөн Win32 метадайындар долбоору, бул ар кандай программалоо тилдери үчүн API түзүүнү жеңилдетүү үчүн иштелип чыккан. Долбоордун биринчи этабында Метамаалыматтар долбоорунун негизинде түзүлгөн экинчи китепкана - C#/Win32. Майкрософт дагы иш башталганын жарыялады C++ үчүн версия, бул тилдин заманбап стилин колдонгон.

Source: linux.org.ru