Microsoft ji bo API-ya Windows-ê pirtûkxaneya Rust ya fermî derxist

Pirtûkxane di bin lîsansa MIT-ê de wekî kaxezek Rust hatî çêkirin, ku dikare bi vî rengî were bikar anîn:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Piştî vê yekê, di skrîpta avakirina build.rs de, hûn dikarin modulên ku ji bo serîlêdana we hewce ne biafirînin:

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

Belgekirin li ser modulên berdest li ser têne weşandin docs.rs.

Nimûne kod:

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

girêdanan bikar bînin::{
windows:: data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows:: Encam<()> {
bila doc = XmlDocument::new()?;
doc.load_xml(" silav dinyayê ")?;

bila root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "silav dinya");

ne ewle {
bila bûyer = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(bûyer).ok()?;
WaitForSingleObject(bûyer, 0);
CloseHandle(bûyer).ok()?;
}

Ok (())
}

Hin bangên fonksiyonê ne ewledar bikar tînin ji ber ku van fonksiyonan wekî ku têne peyda kirin, bêyî ku wan bi peymanên Rust re adapte bikin. Crate li ser heman prensîbê hatî çêkirin. libc, ku ji bo gihîştina libc wekî kaxezek bingehîn kar dike û wekî bingehek ji bo avakirina pirtûkxaneyên bi navgînek ewledar tê bikar anîn.


Proje di çarçoveyê de hate çêkirin Projeya Metadata Win32, ku ji bo hêsankirina çêkirina API-an ji bo zimanên bernamesaziyê yên cihêreng hatî çêkirin. Pirtûkxaneya duyemîn, ku di qonaxa yekem a projeyê de li ser bingeha Projeya Metadata hate afirandin - C#/Win32. Microsoft jî destpêkirina xebatê li ser ragihand guhertoya ji bo C ++, ku şêweyekî zimanekî nûjen bikar tîne.

Source: linux.org.ru