Microsoft đã phát hành thư viện Rust chính thức cho Windows API

Thư viện được thiết kế dưới dạng thùng Rust theo Giấy phép MIT, có thể được sử dụng như thế này:

[phụ thuộc] windows = "0.2.1"

[phụ thuộc bản dựng] windows = "0.2.1"

Sau này, trong tập lệnh xây dựng build.rs, bạn có thể tạo các mô-đun cần thiết cho ứng dụng của mình:

fn chính() {
cửa sổ::xây dựng!(
cửa sổ::dữ liệu::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

Tài liệu về các mô-đun có sẵn được xuất bản trên docs.rs.

Mã mẫu:

ràng buộc mod {
::windows::include_binds!();
}

sử dụng các ràng buộc::{
cửa sổ::dữ liệu::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
hãy để doc = XmlDocument::new()?;
doc.load_xml(" Chào thế giới ")?;

hãy root = doc.document_element()?;
khẳng định!(root.node_name()? == "html");
khẳng định!(root.inner_text()? == "xin chào thế giới");

không an toàn {
hãy để sự kiện = CreateEventW(
std::ptr::null_mut(),
true.into(),
sai.into(),
std::ptr::null(),
);

SetEvent(event).ok()?;
WaitForSingleObject(sự kiện, 0);
CloseHandle(event).ok()?;
}

Được rồi(())
}

Một số lệnh gọi hàm sử dụng không an toàn vì các hàm này được cung cấp nguyên trạng mà không điều chỉnh chúng cho phù hợp với các quy ước của Rust. Thùng được thiết kế trên nguyên tắc tương tự. libc, đóng vai trò như một thùng cơ bản để truy cập libc và được sử dụng làm cơ sở để xây dựng các thư viện có giao diện an toàn.


Dự án được tạo ra trong khuôn khổ Dự án siêu dữ liệu Win32, được thiết kế để giúp tạo API cho các ngôn ngữ lập trình khác nhau dễ dàng hơn. Thư viện thứ hai, được tạo dựa trên Dự án siêu dữ liệu trong giai đoạn đầu của dự án - C # / Win32. Microsoft cũng đã công bố bắt đầu làm việc trên phiên bản dành cho C++, sử dụng phong cách ngôn ngữ hiện đại.

Nguồn: linux.org.ru