Microsoft Windows API uchun rasmiy Rust kutubxonasini chiqardi

Kutubxona MIT litsenziyasi ostida Rust qutisi sifatida ishlab chiqilgan bo'lib, undan quyidagicha foydalanish mumkin:

[bog'liqliklar] windows = "0.2.1"

[qurilishga bog'liqlik] windows = "0.2.1"

Shundan so'ng, build.rs build skriptida siz ilovangiz uchun zarur bo'lgan modullarni yaratishingiz mumkin:

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

Mavjud modullar haqidagi hujjatlar nashr etilgan docs.rs.

Kod namunasi:

mod bog'lashlari {
::windows::include_bindings!();
}

ulanishlardan foydalaning ::{
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(" Salom Dunyo ");

root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "salom dunyo");

xavfli {
voqea = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

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

Kelishdikmi(())
}

Ba'zi funksiya chaqiruvlari xavfsiz emas, chunki bu funksiyalar Rust konventsiyalariga moslashtirilmagan holda taqdim etiladi. Kassa xuddi shu printsip asosida ishlab chiqilgan. libclibc ga kirish uchun asosiy quti bo'lib xizmat qiladi va xavfsiz interfeysga ega kutubxonalar qurish uchun asos sifatida ishlatiladi.


Loyiha doirasida yaratilgan Win32 metadata loyihasi, bu turli dasturlash tillari uchun API yaratishni osonlashtirish uchun yaratilgan. Loyihaning birinchi bosqichida Metadata loyihasi asosida yaratilgan ikkinchi kutubxona - C#/Win32. Microsoft ham ish boshlanganini e'lon qildi C++ uchun versiya, bu tilning zamonaviy uslubidan foydalanadi.

Manba: linux.org.ru