目次

Rustの勉強[Cargo、Crates.io その1]

(更新: )ぎじゅつ

はじめに

#

NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる

  • 本日2回目だがなんとかサボらずできている

お勉強

#

NO IMAGECargoとCrates.ioについてより詳しく - The Rust Programming Language 日本語版

今日はここ

メモ

#
  • 詳しく見過ぎる必要がないといわれたので本当に光るところだけ読む

crates.ioでライブラリを公開する

  • 実はこれだけ気になっている

リリースプロファイルでビルドをカスタマイズする

#
$ cargo build
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
$ cargo build --release
    Finished release [optimized] target(s) in 0.0 secs
  • これね
  • --releaseってよくClaude Codeが使うからなんかそれっぽいんだろうなとしか思っていなかった
  • [profile.release]をtomlに定義する必要があるんやな
  • まあ、ほかの言語でもあるやつ

Crates.ioにクレートを公開する

#
  • 気になるやつきた

アカウントを作成し、APIトークンを保存し、クレートの名前を決め、必要なメタデータを指定したので、 公開する準備が整いました!クレートを公開すると、特定のバージョンが、 crates.ioに他の人が使用できるようにアップロードされます。

  • なるほどね
  • とりあえずこれで公開ができるんだな

NO IMAGESemantic Versioning 2.0.0Semantic Versioning spec and websiteSemantic Versioning

  • これ知らなかった
  • cargo yankでバージョンを取り下げられるらしい
  • 公開前にライセンスなどのメタデータとコメントで補助したほうが良さそう
  • 公開するときにここのページを参考にコメント書こう

NO IMAGECrates.ioにクレートを公開する - The Rust Programming Language 日本語版

Cargoのワークスペース

#
  • これ個人プロジェクトで採用しようとしたけどリポジトリ分けちゃった
├── Cargo.lock
├── Cargo.toml
├── add-one
 ├── Cargo.toml
 └── src
 └── lib.rs
├── adder
 ├── Cargo.toml
 └── src
 └── main.rs
└── target
  • なるほどね、こうなるんだ

ワークスペースには、各クレートのディレクトリそれぞれにCargo.lockが存在するのではなく、 ワークスペースの最上位階層にただ一つのCargo.lockが存在するだけのことに注目してください。

  • これ知らなかった
  • あとはtestとかbuildに-pでパッケージ名を渡せば各々実行できるっぽい
    • 引数なしは全体

cargo installでCrates.ioからバイナリをインストールする

#

独自の設定を何も行なっていなければ、このディレクトリは、$HOME/.cargo/binになります。

  • へーそうなんだ
  • goでもあったような
  • まあnix使うけれども

独自のコマンドでCargoを拡張する

#
  • なんぞこれ

$PATHにあるバイナリがcargo-somethingという名前なら、cargo something

  • ふーん
  • 使わなさそう。。。

スマートポインタ

#
  • でかい章きたな
  • ざっくりよんだけどわからん
  • とりあえず今までの章にでてきたらしい

まとめ

#
  • 光らせることが少しできた
    • 気になっていた所を注視して読めた
  • 得に細かいところはなくて、Tips程度だった
    • 次のスマートポインタは中々手ごわそうな予感がしている

次ここ
NO IMAGEヒープのデータを指すBox<T>を使用する - The Rust Programming Language 日本語版