Microsoft-แƒ›แƒ แƒ’แƒแƒ›แƒแƒฃแƒจแƒ•แƒ แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ Rust แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ Windows API-แƒกแƒ—แƒ•แƒ˜แƒก

แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช Rust crate MIT แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

[dependencies] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, build.rs build แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜:

fn main () {
Windows:: แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ!(
windows::data::xml::dom::*
Windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ docs.rs.

แƒ™แƒแƒ“แƒ˜แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜:

mod bindings {
:: windows:: include_bindings!();
}

แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒกแƒแƒ™แƒ˜แƒœแƒซแƒ”แƒ‘แƒ˜::{
Windows::data::xml::dom::*,
Windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
Windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows:: แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜<()> {
แƒ›แƒแƒ“แƒ˜แƒ— doc = XmlDocument::new()?;
doc.load_xml(" แƒ’แƒแƒ›แƒแƒ แƒฏแƒแƒ‘แƒ แƒ›แƒกแƒแƒคแƒšแƒ˜แƒ ")?;

แƒ›แƒแƒ“แƒ˜แƒ— root = doc.document_element()?;
assert!(root.node_name()? == "html");
แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ”แƒœ!(root.inner_text()? == "แƒ’แƒแƒ›แƒแƒ แƒฏแƒแƒ‘แƒ แƒกแƒแƒ›แƒงแƒแƒ แƒ");

แƒกแƒแƒฎแƒ˜แƒคแƒแƒ—แƒ {
แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(event).ok()?;
WaitForSingleObject (แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ, 0);
CloseHandle(event).ok()?;
}

แฒ™แƒแƒ แƒ’แƒ˜(())
}

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ แƒกแƒแƒฎแƒ˜แƒคแƒแƒ—แƒแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ แƒ˜แƒก, Rust-แƒ˜แƒก แƒ™แƒแƒœแƒ•แƒ”แƒœแƒชแƒ˜แƒ”แƒ‘แƒ—แƒแƒœ แƒแƒ“แƒแƒžแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒ™แƒ แƒแƒขแƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒ—. libc, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช libc-แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒ™แƒ แƒแƒขแƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒ— แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“.


แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ Win32 แƒ›แƒ”แƒขแƒแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ’แƒแƒแƒแƒ“แƒ•แƒ˜แƒšแƒแƒก API-แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒ”แƒแƒ แƒ” แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒ›แƒ”แƒขแƒแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ”แƒขแƒแƒžแƒ–แƒ” - C#/Win32. Microsoft-แƒ›แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒ›แƒแƒแƒชแƒฎแƒแƒ“แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ C++-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ”แƒœแƒ˜แƒก แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒกแƒขแƒ˜แƒšแƒก.

แƒฌแƒงแƒแƒ แƒ: linux.org.ru