目次

Rustの勉強[CLI作成編 その1]

(更新: )ぎじゅつ

はじめに

#

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

  • 起きてすぐこれをやりたい

今日読む場所

#
  • https://doc.rust-jp.rs/book-ja/ch12-00-an-io-project.html

お勉強

#

メモ

#

Rustコミュニティのあるメンバであるアンドリュー・ガラント(Andrew Gallant)が既に全機能装備の非常に高速なgrep、 ripgrepと呼ばれるものを作成しました。比較対象として、我々のgrepはとても単純ですが、 この章により、ripgrepのような現実世界のプロジェクトを理解するのに必要な背景知識の一部を身に付けられるでしょう。

  • たしかに
  • とりあえずnixでプロジェクト作るか
    • cargo newでプロジェクト作れっていわれたがrepoを先に作ってしまったのでcargo init ./にした
    • 余談だけどgit initだとmainブランチじゃなくてmasterで作成されるんだな
  • とりあえず建てた

GitHub - Xantibody/minigrep: https://doc.rust-jp.rs/book-ja/ch12-00-an-io-project.htmlGitHub - Xantibody/minigrep: https://doc.rust-jp.rs/book-ja/ch12-00-an-io-project.htmlhttps://doc.rust-jp.rs/book-ja/ch12-00-an-io-project.html - Xantibody/minigrepGitHub

  • 実際、検証しながらやってくと全然書けない

std::env::args関数は、2レベルモジュールがネストされていることに注目してください。 第7章で議論したように、希望の関数が2モジュール以上ネストされている場合、 関数ではなく親モジュールをスコープに導入するのが因習的です。

  • そうだっけ...!
  • そうしよう

引数のどれかが不正なユニコードを含んでいたら、std::env::argsはパニックすることに注意してください。 プログラムが不正なユニコードを含む引数を受け付ける必要があるなら、代わりにstd::env::args_osを使用してください。 この関数は、String値ではなく、OsString値を生成するイテレータを返します。ここでは、 簡潔性のためにstd::env::argsを使うことを選択しました。 なぜなら、OsString値はプラットフォームごとに異なり、String値に比べて取り扱いが煩雑だからです。

  • うおーここでも文字列の扱いの難しさが

まとめ

#
  • 手を動かしながらだとあまり進まないな...
  • 自分が作りたいものはclaude codeに任せてこっちは別途手で書く方針がいいなーと思った
  • ちょっと今回は学びが少ないが、書きはじめられたのをよしとする
  • 次はここ

NO IMAGEコマンドライン引数を受け付ける - The Rust Programming Language 日本語版