Microsoft Windows API కోసం అధికారిక రస్ట్ లైబ్రరీని విడుదల చేసింది

లైబ్రరీ MIT లైసెన్స్ క్రింద రస్ట్ క్రేట్ వలె రూపొందించబడింది, దీనిని ఇలా ఉపయోగించవచ్చు:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

దీని తర్వాత, build.rs బిల్డ్ స్క్రిప్ట్‌లో, మీరు మీ అప్లికేషన్‌కు అవసరమైన మాడ్యూల్‌లను రూపొందించవచ్చు:

fn ప్రధాన() {
విండోస్::బిల్డ్!(
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 మెయిన్() -> విండోస్::ఫలితం<()> {
లెట్ డాక్ = XmlDocument::new()?;
doc.load_xml(" హలో వరల్డ్ ")?;

రూట్ లెట్ = doc.document_element()?;
assert!(root.node_name()? == "html");
నొక్కిచెప్పండి!(root.inner_text()? == "హలో వరల్డ్");

అసురక్షిత {
ఈవెంట్‌ని అనుమతించండి = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(ఈవెంట్).ok()?;
WaitForSingleObject(ఈవెంట్, 0);
CloseHandle(event).ok()?;
}

అలాగే(())
}

కొన్ని ఫంక్షన్ కాల్‌లు అసురక్షితాన్ని ఉపయోగిస్తాయి ఎందుకంటే ఈ ఫంక్షన్‌లు రస్ట్ కన్వెన్షన్‌లకు అనుగుణంగా ఉండకుండా అలాగే అందించబడతాయి. క్రేట్ అదే సూత్రంపై రూపొందించబడింది. libc, ఇది libcని యాక్సెస్ చేయడానికి ప్రాథమిక క్రేట్‌గా పనిచేస్తుంది మరియు సురక్షితమైన ఇంటర్‌ఫేస్‌తో లైబ్రరీలను నిర్మించడానికి ఆధారంగా ఉపయోగించబడుతుంది.


ప్రాజెక్ట్ ఫ్రేమ్‌వర్క్‌లో సృష్టించబడింది Win32 మెటాడేటా ప్రాజెక్ట్, ఇది వివిధ ప్రోగ్రామింగ్ భాషల కోసం APIలను సులభంగా సృష్టించడానికి రూపొందించబడింది. ప్రాజెక్ట్ యొక్క మొదటి దశలో మెటాడేటా ప్రాజెక్ట్ ఆధారంగా రూపొందించబడిన రెండవ లైబ్రరీ - C#/Win32. మైక్రోసాఫ్ట్ కూడా పని ప్రారంభించినట్లు ప్రకటించింది C++ కోసం వెర్షన్, ఇది ఆధునిక భాషా శైలిని ఉపయోగిస్తుంది.

మూలం: linux.org.ru