この記事は公開から2年以上経過しています。
Windows 10とVSCodeを用いたRust開発で、windowsクレート(windows-rs/Rust for Windows)を使ってWindows APIのMessageBoxW関数を呼び出す簡単なサンプルを紹介します。
本エントリはRust開発環境が構築済の前提です。Rust開発環境の構築方法については、参考ウェブサイトの「Windows で Rust 用の開発環境を設定する」をご参照ください。
手順
-
ターミナルで以下のコマンドを実行してRustのパッケージを作成、作成されたパッケージのフォルダをVSCodeで開く。
cargo new test220103 code test220103
-
ターミナルで以下のコマンドを実行して
crates.io
から最新のwindows
クレート(Rust for Windows)のバージョンを取得する。cargo search windows
コマンド実行結果は以下のとおり。
windows
クレートのバージョンが0.29.0
であることが分かる。windows = "0.29.0" # Rust for Windows swayr = "0.12.0" # A LRU window-switcher (and more) for the sway window manager 〜〜〜 省略 〜〜〜
-
VSCodeのエクスプローラツリーから
Cargo.toml
を開き、以下のようにdependencies.windows
セクションの内容を追加する。[package] name = "test220103" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies.windows] version="0.29.0" features =[ "alloc", "Win32_Foundation", "Win32_UI_WindowsAndMessaging", ]
Version
には手順2で取得したwindowsクレートのバージョンを指定する。
features
にはここでWinAPI名を検索すると得られる依存features名を記載する(下図)。 -
VSCodeのエクスプローラツリーから
main.rs
を開き、元のコードを以下のサンプルコードに置き換える。use windows::{core::*, Win32::UI::WindowsAndMessaging::*}; fn main() -> Result<()> { unsafe { MessageBoxW(None, "Hello Rust for Windows!", "Rust", MB_OK); } Ok(()) }
-
VSCodeで
F5
キーを押下するとデバッガが起動できない旨のエラー表示に続き下図のようなダイアログが表示されるので、Yes
を選択してCargo.toml
からlaunch.json
の自動生成を行う。Yes
を選択して生成されたlaunch.json
は以下のとおり。{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug executable 'test220103'", "cargo": { "args": [ "build", "--bin=test220103", "--package=test220103" ], "filter": { "name": "test220103", "kind": "bin" } }, "args": [], "cwd": "${workspaceFolder}" }, { "type": "lldb", "request": "launch", "name": "Debug unit tests in executable 'test220103'", "cargo": { "args": [ "test", "--no-run", "--bin=test220103", "--package=test220103" ], "filter": { "name": "test220103", "kind": "bin" } }, "args": [], "cwd": "${workspaceFolder}" } ] }
実行結果
Rustプログラムを実行すると、下図のようにWinAPI MessageBoxWでメッセージダイアログを表示します。
参考ウェブサイトなど
-
Microsoft Docs
Windows で Rust 用の開発環境を設定する -
creates.io
windows -
The Cargo Book
Specifying Dependencies
以上です。