Microsoft išleido oficialią Rust biblioteką, skirtą Windows API

Biblioteka sukurta kaip rūdžių dėžė pagal MIT licenciją, kurią galima naudoti taip:

[priklausomybės] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Po to build.rs kūrimo scenarijuje galite sugeneruoti modulius, reikalingus jūsų programai:

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

Dokumentai apie turimus modulius skelbiami docs.rs.

Kodo pavyzdys:

mod apkaustai {
::langai::įtraukti_įrišimus!();
}

naudoti apkaustus::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
tegul doc = XmlDocument::new()?;
doc.load_xml(" Labas pasauli ")?;

tegul šaknis = doc.document_element()?;
Assert!(root.mazgo_pavadinimas()? == "html");
Assert!(root.inner_text()? == "sveikas pasaulis");

nesaugus {
tegul įvykis = CreateEventW(
std::ptr::null_mut(),
tiesa.į(),
false.into(),
std::ptr::null(),
);

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

Gerai(())
}

Kai kurie funkcijų iškvietimai naudojami nesaugiai, nes šios funkcijos teikiamos tokios, kokios yra, nepritaikant jų prie Rust konvencijų. Dėžė sukurta tuo pačiu principu. libc, kuri tarnauja kaip pagrindinė dėžutė norint pasiekti libc ir naudojama kaip pagrindas kuriant bibliotekas su saugia sąsaja.


Projektas buvo sukurtas rėmuose Win32 metaduomenų projektas, kuri skirta palengvinti skirtingų programavimo kalbų API kūrimą. Antroji biblioteka, kuri buvo sukurta remiantis metaduomenų projektu pirmajame projekto etape - C# / Win32. „Microsoft“ taip pat paskelbė apie darbo pradžią versija, skirta C++, kuriame vartojamas modernus kalbos stilius.

Šaltinis: linux.org.ru