微軟發布了 Windows API 的官方 Rust 函式庫

該庫被設計為 MIT 許可證下的 Rust 箱,可以像這樣使用:

[依賴項] windows =“0.2.1”

[建構依賴項] windows = "0.2.1"

之後,在 build.rs 建置腳本中,您可以產生應用程式所需的模組:

fn 主() {
窗口::建置!(
視窗::資料::xml::dom::*
windows::win32::system_services::{CreateEventW、SetEvent、WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

有關可用模組的文件發佈於 文檔.rs.

示例:

模組綁定 {
::windows::include_bindings!();
}

使用綁定::{
視窗::資料::xml::dom::*,
windows::win32::system_services::{CreateEventW,SetEvent,WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
讓 doc = XmlDocument::new()?;
文檔.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 約定。 Crate 的設計原理相同。 libc中,它用作存取 libc 的基本包,並用作構建具有安全介面的庫的基礎。


該專案是在框架內創建的 Win32 元資料項目,旨在更輕鬆地為不同的程式語言建立 API。 第二個庫,是在專案第一階段基於元資料專案創建的—— C#/Win32。 微軟也宣布開始工作 C++ 版本,使用現代風格的語言。

來源: linux.org.ru