なんか開発用プログラムとかを作りたいとき
Tauri とは多分関係ないです。
前回までの例を出すと、マップエディターでマップを編集して、それを StoreAPI で JSON としてファイルに保存したのですが、それを実際のマップのファイル (src/maps/<mapId>.ts
) に変換しなければならないのですが...
手動でやるのはかったるいですよね...?
他にもなんか例えばキャッシュを削除したり、画像データを同期したり...
これらをコマンド 1 つで出来たら便利ですよね。
Rust-bin
Rust の機能(Cargo の機能)として、メインとなるプロジェクト以外にbin
というものを使う事で、簡易的に複数プロジェクトをまとめて管理する事が出来ます。
(そもそも Tauri はlib
として管理されているが私はここら辺は知らんのだ)
(もっと言うとpackage
を複数用意すればプロジェクトも増やせるけど)
本来 Cargo ではプロジェクトは 1 つで、cargo run
ってやったらsrc/main.rs
が動きますが、特別なコマンドを使う事で別ファイルを動かせます。
先ずはsrc-tauri
に移動しましょう。
$ cd ./src-tauri
bin
folder
src-tauri
の中には Rust が詰まってます。かわいいですね。
更に Rust のプログラムが詰まっているsrc
フォルダの中にbin
フォルダを作りましょう。
$ mkdir src/bin
file
今回はhw1.rs
を作ってみましょう。
場所はsrc/bin
の下です。
中身は適当に以下のようにしましょう。
fn main() {
println!("Hello World from hw1.rs!");
}
まぁ何の変哲もない Hello World ですね。
これをbin
機能で実行してみたいと思います。
$ cargo run --bin hw1
すると、ビルドが挟まり、Hello World from hw1.rs!
と表示されるはずです。
このように、src/bin
以下にファイルを置いた場合、cargo run --bin <ファイル名>
で実行する事が出来ます。
ファイルだけではなくフォルダでも、cargo run --bin <フォルダ名>
で実行する事が出来ます。
フォルダの場合は、そのフォルダ内のmain.rs
が実行されます。
Bin target
更に、別途名前を指定することも出来ます。
Cargo.toml
の中に以下のような記述を加えましょう
[[bin]]
name = "hw2"
path = "src/bin/harowa.rs"
そしてsrc/bin
にharowa.rs
を作りましょう。
fn main() {
println!("Haro-wa-rudo");
}
この状態でcargo run --bin hw2
を実行すると、Haro-wa-rudo
と表示されるはずです。
これで、開発用プログラムを実行することが出来そうなのですが、いちいちsrc-tauri
に行くの...面倒ですよね。
Cargo のディレクトリ指定機能
なぜsrc-tauri
に行かなければならなかったのかというと、Cargo ではCargo.toml
がないと、そこを Rust のプロジェクトフォルダと認識せず、
Cargo のコマンドが使えないからです。
なので、cargo にsrc-tauri
を指定してみたいと思います。
cargo
とだけ入力すると、-C <DIRECTORY> Change to DIRECTORY before doing anything (nightly-only)
という表記を確認できると思います。
(cargo 1.79.0 (ffa9cf99a 2024-06-03)
)
これを使って、Rust のプロジェクトフォルダを指定することが出来ます。
$ cargo -C src-tauri
error: the `-C` flag is unstable, pass `-Z unstable-options` on the nightly channel to enable it
なんか言われましたね。
-C
は安定してないからオプションをさらにつけろって言われてますね。
$ cargo -Z unstable-options -C src-tauri
error: the `-C` flag is unstable, pass `-Z unstable-options` on the nightly channel to enable it
ん? 変わった?
あ、見落としてた。
on the nightly channel to enable it
とあるように、この-C
オプションは nightly でしか使えないようです。
なので Nightly を使えるようにしましょう。
Nightly
とは、雑に言えば超々開発版のことで、その日の夜(night)にビルドされてたことからそう呼ばれています。
Nightly を使ういくつかの方法
Rust Toolchain Nightly
まずは最初のフォルダでrust-toolchain
というファイルを作りましょう。
そして中身にnightly
とだけ書きましょう。
$ echo "nightly" > rust-toolchain
これで、そのフォルダ内でnightly
が使えるようになります。
試しにcargo -V
を実行してみましょう。
$ cargo -V
cargo 1.85.0-nightly (652623b77 2024-12-20)
Nightly になりましたね。
+
オプション
先ほどよりも簡単で、+nightly
というオプションをつけるだけで Nightly を使うことが出来ます。
$ cargo +nightly -V
cargo 1.85.0-nightly (652623b77 2024-12-20)
これも Nightly になりましたね。
回帰
さて、Nightly を使えるようになったので、-C
オプションを使ってsrc-tauri
を指定してみましょう。
$ cargo +nightly -C src-tauri run --bin hw1
すると、Hello World from hw1.rs!
と表示されるはずです。
これで完璧ですね。
あとは JSON ファイルからマップのファイルを作るプログラムを書くだけです。
Rust で JSON を扱うときには以下の方の記事が欲参考になりますのでぜひご覧ください。
Serde を用いた Rust の json 取り扱いメモ - scirexs | Zenn
それではここらで終わりにしましょう。