rust: cargo の workspace
自分で作っている Rust のプロジェクトがあり、その 2つを一緒にしたプロジェクトを作ろうと思った。
どちらも本体は lib にあるので cargo add すればよいと思っていたが、
まだ改造が必要になるし、元々作っているのはそのままにして別系統にした方がよいと考えて cargo の workspace を使ってみることにした。
cargo プロジェクトの中に cargo プロジェクトがあるだけ?
ざっとした感想だが、ディレクトリを作ってその中に 2つの Rust プロジェクトをまるまるコピーし(.git は消す)、
同じ高さに Cargo.toml を置いてちょこちょこ書くと、それだけで特にメリットは無さそうだが cargo workspace になりそう。
こちらを見ていたけど、出てくる名前が add や adder で、 cargo add はここでは使っていないけどコマンドとしてはあるので頭の中がゴチャゴチャしてきた。
もうちょっと関係ない名前にしてくれれば良かったのに。
やる前はワークスペースの直下にある Cargo.toml がメインプログラムになるのかと思っていたが、予想が外れた。
ワークスペースのメンバーはこれこれで、でもデフォルトではこれこれしか使わない、みたいなことを書くだけだった。
各 cargo プロジェクトの中に Cargo.lock はない方が良い?
各 cargo プロジェクトの中はそれまでとあまり変わらない。
使われる Cargo.lock はトップにある方で
各プロジェクトにある Cargo.lock はなんだかよくわからない。
しかし vscode というか rust-analyzer だと思うのだが同じディレクトリにある Cargo.lock を見に行くのか
dependencies に追加しているクレートのバージョンを最新にしてもずっと × マークがついていた。
さんざん update だとかなんだとかやったがファイル削除したら直った。
トップディレクトリに src/ など置いてもダメそう
トップディレクトリに src/main.rs を置いて Cargo.toml の member に "." としてみたが認識されなかった。
されなくてもよいのだけど、もしかしたらされるかなー、と思っただけだ。
直接 workspace.dependencies に add するオプションはなさそう
昔の cargo にはそういうオプションがあったらしいが、不安定だったので削除されたらしい。
ChatGPT氏が言っていただけなので本当かどうかは知らん。少なくとも今はない。