hiro99ma blog

rust: cargo の workspace

自分で作っている Rust のプロジェクトがあり、その 2つを一緒にしたプロジェクトを作ろうと思った。
どちらも本体は lib にあるので cargo add すればよいと思っていたが、 まだ改造が必要になるし、元々作っているのはそのままにして別系統にした方がよいと考えて cargo の workspace を使ってみることにした。

cargo プロジェクトの中に cargo プロジェクトがあるだけ?

ざっとした感想だが、ディレクトリを作ってその中に 2つの Rust プロジェクトをまるまるコピーし(.git は消す)、 同じ高さに Cargo.toml を置いてちょこちょこ書くと、それだけで特にメリットは無さそうだが cargo workspace になりそう。

こちらを見ていたけど、出てくる名前が addadder で、 cargo add はここでは使っていないけどコマンドとしてはあるので頭の中がゴチャゴチャしてきた。 もうちょっと関係ない名前にしてくれれば良かったのに。

やる前はワークスペースの直下にある Cargo.toml がメインプログラムになるのかと思っていたが、予想が外れた。
ワークスペースのメンバーはこれこれで、でもデフォルトではこれこれしか使わない、みたいなことを書くだけだった。

各 cargo プロジェクトの中に Cargo.lock はない方が良い?

各 cargo プロジェクトの中はそれまでとあまり変わらない。
使われる Cargo.lockトップにある方で 各プロジェクトにある Cargo.lock はなんだかよくわからない。
しかし vscode というか rust-analyzer だと思うのだが同じディレクトリにある Cargo.lock を見に行くのか dependencies に追加しているクレートのバージョンを最新にしてもずっと × マークがついていた。
さんざん update だとかなんだとかやったがファイル削除したら直った。

トップディレクトリに src/ など置いてもダメそう

トップディレクトリに src/main.rs を置いて Cargo.tomlmember"." としてみたが認識されなかった。
されなくてもよいのだけど、もしかしたらされるかなー、と思っただけだ。

直接 workspace.dependencies に add するオプションはなさそう

昔の cargo にはそういうオプションがあったらしいが、不安定だったので削除されたらしい。
ChatGPT氏が言っていただけなので本当かどうかは知らん。少なくとも今はない。

writer: hiro99ma
tags: Rust言語

 
About me
About me
comment
Comment Form
🏠
Top page
GitHub
GitHub
Twitter
X/Twitter
My page
Homepage