ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½Π° ΠΊΠ°ΠΊΠΎ Π³Π°ΡΠ±Π° Rust ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° MIT, ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²Π°ΠΊΠ°:
[Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ] ΠΏΡΠΎΠ·ΠΎΡΡΠΈ = "0.2.1" [build-dependencies] windows = "0.2.1"ΠΠΎΡΠ»Π΅ ΠΎΠ²Π°, Π²ΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΡΠ° Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ build.rs, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° Π²Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°:
fnmain() {
Windows::build!(
Windows::ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ::xml::dom::*
Windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΅ ΠΎΠ±ΡΠ°Π²Π΅Π½Π° Π½Π° docs.rs.
ΠΡΠΈΠΌΠ΅ΡΠΎΠΊ ΠΊΠΎΠ΄:
ΠΌΠΎΠ΄ Π²ΡΡΠΊΠΈ {
:: Windows::include_bindings!();
}
ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π²ΡΡΠΊΠΈ::{
Windows::ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ::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()?;
ΡΠ²ΡΠ΄ΠΈ!(root.node_name()? == "html");
ΡΠ²ΡΠ΄ΠΈ!(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