Microsoft ได้เปิดตัวไลบรารี Rust อย่างเป็นทางการสำหรับ Windows API

ห้องสมุดได้รับการออกแบบให้เป็นลังสนิมภายใต้ใบอนุญาต MIT ซึ่งสามารถใช้งานได้ดังนี้:

[การพึ่งพา] windows = "0.2.1"

[สร้างการพึ่งพา] windows = "0.2.1"

หลังจากนี้ ในสคริปต์บิลด์ build.rs คุณสามารถสร้างโมดูลที่จำเป็นสำหรับแอปพลิเคชันของคุณได้:

fnmain() {
หน้าต่าง::สร้าง!(
หน้าต่าง::ข้อมูล::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

เอกสารเกี่ยวกับโมดูลที่มีอยู่มีการเผยแพร่บน เอกสาร.อาร์เอส.

รหัสตัวอย่าง:

การผูก mod {
::windows::include_bindings!();
}

ใช้การผูก::{
หน้าต่าง::ข้อมูล::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()?;
ยืนยัน!(root.node_name()? == "html");
assert!(root.inner_text()? == "สวัสดีชาวโลก");

ไม่ปลอดภัย {
ให้เหตุการณ์ = CreateEventW(
มาตรฐาน::ptr::null_mut()
true.into()
false.into()
มาตรฐาน::ptr::null()
);

SetEvent(เหตุการณ์).ตกลง()?;
WaitForSingleObject (เหตุการณ์ 0);
CloseHandle(เหตุการณ์).ตกลง()?;
}

ตกลง(())
}

การเรียกใช้ฟังก์ชันบางอย่างใช้ไม่ปลอดภัย เนื่องจากฟังก์ชันเหล่านี้มีให้ตามที่เป็นอยู่ โดยไม่ต้องปรับให้เข้ากับแบบแผนของ Rust ลังได้รับการออกแบบบนหลักการเดียวกัน libcซึ่งทำหน้าที่เป็นลังพื้นฐานสำหรับการเข้าถึง libc และใช้เป็นพื้นฐานสำหรับการสร้างไลบรารีด้วยอินเทอร์เฟซที่ปลอดภัย


โครงการถูกสร้างขึ้นภายในกรอบ โครงการข้อมูลเมตา Win32ซึ่งได้รับการออกแบบมาเพื่อให้สร้าง API สำหรับภาษาการเขียนโปรแกรมต่างๆ ได้ง่ายขึ้น ห้องสมุดที่สองซึ่งสร้างขึ้นตามโครงการ Metadata ในเฟสแรกของโครงการ - C#/Win32. ไมโครซอฟต์ยังประกาศเริ่มงานเมื่อ เวอร์ชันสำหรับ C++ซึ่งใช้ภาษารูปแบบสมัยใหม่

ที่มา: linux.org.ru