ΠœΠ°Ρ˜ΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ ја објави ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Rust Π·Π° Windows API

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½Π° ΠΊΠ°ΠΊΠΎ гајба 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