Microsoft пусна ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Rust Π·Π° Windows API

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° ΠΊΠ°Ρ‚ΠΎ кутия Rust ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° MIT, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

[зависимости] windows = "0.2.1"

[build-dependencies] windows = "0.2.1"

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π² скрипта Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° build.rs ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

fn main() {
windows::build!(
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::Result<()> {
Π½Π΅ΠΊΠ° doc = XmlDocument::new()?;
doc.load_xml(" Π—Π΄Ρ€Π°Π²Π΅ΠΉ свят ")?;

Π½Π΅ΠΊΠ° root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "Π·Π΄Ρ€Π°Π²Π΅ΠΉ свят");

опасно {
Π½Π΅ΠΊΠ° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(event).ok()?;
WaitForSingleObject(ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, 0);
CloseHandle(event).ok()?;
}

Π”ΠΎΠ±Ρ€Π΅(())
}

Някои извиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ unsafe, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС прСдоставят Ρ‚Π°ΠΊΠΈΠ²Π°, ΠΊΠ°ΠΊΠ²ΠΈΡ‚ΠΎ са, Π±Π΅Π· Π΄Π° сС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Ρ‚ към ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Rust. Π©Π°ΠΉΠ³Π°Ρ‚Π° Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° Π½Π° ΡΡŠΡ‰ΠΈΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ. Π±ΠΈΠ±Π»ΡˆΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°, ΠΊΠΎΠΉΡ‚ΠΎ слуТи ΠΊΠ°Ρ‚ΠΎ основна каса Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ libc ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ основа Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ със Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ интСрфСйс.


ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ създадСн Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ Win32, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° улСсни ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° API Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅. Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, която Π΅ създадСна въз основа Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π·Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ Π² ΠΏΡŠΡ€Π²Π°Ρ‚Π° Ρ„Π°Π·Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° - C#/Win32. Microsoft ΡΡŠΡ‰ΠΎ обяви Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ вСрсия Π·Π° C++, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ΄Π΅Ρ€Π΅Π½ стил Π½Π° Π΅Π·ΠΈΠΊΠ°.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru