Microsoft-ը թողարկել է պաշտոնական Rust գրադարանը Windows API-ի համար

Գրադարանը նախագծված է որպես Rust crate MIT լիցենզիայի ներքո, որը կարող է օգտագործվել այսպես.

[կախվածություններ] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Դրանից հետո build.rs build script-ում կարող եք ստեղծել ձեր հավելվածի համար անհրաժեշտ մոդուլները.

fn main() {
պատուհաններ::կառուցել!(
windows::տվյալներ::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

Հասանելի մոդուլների վերաբերյալ փաստաթղթերը հրապարակված են docs.rs.

Օրինակ կոդը:

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

օգտագործել կապանքները::{
windows::տվյալներ::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Արդյունք<()> {
թող doc = XmlDocument::new();
doc.load_xml(" Բարեւ աշխարհ «);

թող արմատ = doc.document_element();
պնդել!(root.node_name()? == «html»);
պնդել!(root.inner_text()? == «բարև աշխարհ»);

անապահով {
թող իրադարձություն = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(իրադարձություն).ok();
WaitForSingleObject (իրադարձություն, 0);
CloseHandle(իրադարձություն).ok();
}

Լավ(())
}

Որոշ գործառույթների կանչեր օգտագործվում են ոչ անվտանգ, քանի որ այդ գործառույթները տրամադրվում են այնպես, ինչպես կան, առանց դրանք հարմարեցնելու Rust-ի կոնվենցիաներին: Crate-ը նախագծված է նույն սկզբունքով։ libc, որը ծառայում է որպես հիմնական տուփ libc մուտք գործելու համար և օգտագործվում է որպես անվտանգ միջերեսով գրադարաններ կառուցելու հիմք։


Նախագիծը ստեղծվել է շրջանակներում Win32 մետատվյալների նախագիծ, որը նախատեսված է տարբեր ծրագրավորման լեզուների համար API-ների ստեղծումը հեշտացնելու համար։ Երկրորդ գրադարանը, որը ստեղծվել է ծրագրի առաջին փուլում Մետատվյալների նախագծի հիման վրա. C#/Win32. Աշխատանքների մեկնարկի մասին հայտարարել է նաև Microsoft-ը տարբերակը C++-ի համար, որն օգտագործում է ժամանակակից լեզվական ոճ։

Source: linux.org.ru