Microsoft Windows API үшін ресми Rust кітапханасын шығарды

Кітапхана MIT лицензиясы бойынша Rust жәшігі ретінде жасалған, оны келесідей пайдалануға болады:

[тәуелділіктер] windows = "0.2.1"

[тәуелділіктерді құрастыру] 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::Нәтиже {
let doc = XmlDocument::new()?;
doc.load_xml("сәлем әлем")?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "сәлем әлем");

қауіпті {
оқиға = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(оқиға).ok()?;
WaitForSingleObject(оқиға, 0);
CloseHandle(оқиға).ok()?;
}

Жарайды ма(())
}

Кейбір функция шақырулары қауіпті пайдаланады, себебі бұл функциялар Rust конвенцияларына бейімделмей, сол күйінде беріледі. Қорап бірдей принцип бойынша жасалған. libc, ол libc қол жеткізу үшін негізгі жәшік ретінде қызмет етеді және қауіпсіз интерфейсі бар кітапханаларды құру үшін негіз ретінде пайдаланылады.


Жоба аясында құрылды Win32 метадеректер жобасы, ол әртүрлі бағдарламалау тілдері үшін API құруды жеңілдету үшін жасалған. Жобаның бірінші кезеңінде метадеректер жобасы негізінде құрылған екінші кітапхана – C#/Win32. Майкрософт жұмыстың басталғанын хабарлады C++ нұсқасы, ол тілдің заманауи стилін қолданады.

Ақпарат көзі: linux.org.ru