Microsoft විසින් Windows API සඳහා නිල Rust පුස්තකාලය නිකුත් කර ඇත

පුස්තකාලය MIT බලපත්‍රය යටතේ රස්ට් කූඩයක් ලෙස නිර්මාණය කර ඇත, එය මෙලෙස භාවිතා කළ හැක:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

මෙයින් පසු, build.rs build script තුළ, ඔබට ඔබගේ යෙදුම සඳහා අවශ්‍ය මොඩියුල උත්පාදනය කළ හැක:

fn ප්‍රධාන() {
windows::build!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

පවතින මොඩියුල පිළිබඳ ලේඛන ප්‍රකාශයට පත් කෙරේ docs.rs.

උදාහරණ කේතය:

mod බන්ධන {
:: windows::include_bindings!();
}

බන්ධන භාවිතා කරන්න::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn ප්‍රධාන() -> windows::Result<()> {
ඉඩ දෙන්න doc = XmlDocument::new()?;
doc.load_xml(" හෙලෝ වර්ල්ඩ් ")?;

ඉඩ දෙන්න root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hello world");

අනාරක්ෂිත {
සිදුවීමට ඉඩ දෙන්න = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(සිද්ධිය).ok()?;
WaitForSingleObject(සිදුවීම, 0);
CloseHandle(සිද්ධිය).ok()?;
}

හරි(())
}

සමහර ශ්‍රිත ඇමතුම් රස්ට් සම්මුතිවලට අනුවර්තනය නොකර, මෙම කාර්යයන් එලෙසම සපයා ඇති නිසා අනාරක්ෂිත ලෙස භාවිත කරයි. කූඩය එකම මූලධර්මය මත නිර්මාණය කර ඇත. libc, එය libc වෙත ප්‍රවේශ වීම සඳහා මූලික කූඩයක් ලෙස ක්‍රියා කරන අතර ආරක්ෂිත අතුරු මුහුණතක් සහිත පුස්තකාල ගොඩනැගීම සඳහා පදනමක් ලෙස භාවිතා කරයි.


ව්යාපෘතිය නිර්මාණය කර ඇත Win32 පාරදත්ත ව්‍යාපෘතිය, විවිධ ක්‍රමලේඛන භාෂා සඳහා API නිර්මාණය කිරීම පහසු කිරීම සඳහා නිර්මාණය කර ඇත. ව්‍යාපෘතියේ පළමු අදියරේදී පාරදත්ත ව්‍යාපෘතිය මත පදනම්ව නිර්මාණය කරන ලද දෙවන පුස්තකාලය - C#/Win32. මයික්‍රොසොෆ්ට් ද වැඩ ආරම්භ කිරීම නිවේදනය කළේය C++ සඳහා අනුවාදය, නවීන භාෂා ශෛලියක් භාවිතා කරයි.

මූලාශ්රය: linux.org.ru