Microsoft が Windows API 用の公式 Rust ライブラリをリリースしました

このライブラリは、MIT ライセンスの下で Rust クレートとして設計されており、次のように使用できます。

[依存関係] windows = "0.2.1"

[ビルド依存関係] windows = "0.2.1"

この後、build.rs ビルド スクリプトで、アプリケーションに必要なモジュールを生成できます。

fn main() {
ウィンドウ::ビルド!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW、SetEvent、WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

利用可能なモジュールに関するドキュメントは、次の場所で公開されています。 ドキュメント.rs.

サンプルコード:

MOD バインディング {
::windows::include_bindings!();
}

バインディングを使用します::{
windows::data::xml::dom::*、
windows::win32::system_services::{CreateEventW、SetEvent、WaitForSingleObject}、
windows::win32::windows_programming::CloseHandle、
};

fn main() -> windows::Result<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" こんにちは世界")?;

root = doc.document_element()?; とします。
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hello world");

安全でない {
let イベント = CreateEventW(
std::ptr::null_mut()、
true.into()、
false.into()、
std::ptr::null()、
);

SetEvent(イベント).ok()?;
WaitForSingleObject(イベント, 0);
CloseHandle(event).ok()?;
}

わかりました(())
}

一部の関数呼び出しでは安全でないものを使用しています。これは、これらの関数が Rust の規約に適合せずにそのまま提供されているためです。 クレートも同じ原理で設計されています。 libcのこれは libc にアクセスするための基本的なクレートとして機能し、安全なインターフェイスを備えたライブラリを構築するための基礎として使用されます。


プロジェクトはフレームワーク内で作成されました Win32 メタデータ プロジェクト、さまざまなプログラミング言語の API を簡単に作成できるように設計されています。 XNUMX 番目のライブラリは、プロジェクトの第 XNUMX フェーズのメタデータ プロジェクトに基づいて作成されました。 C#/ Win32。 マイクロソフトはまた、 C++ のバージョン、現代的な言語スタイルを使用します。

出所: linux.org.ru