目次

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

(更新: )ぎじゅつ

はじめに

#

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

  • 立川のゲームバーに行こうとしている

お勉強

#

メモ

#

NO IMAGEリファクタリングしてモジュール性とエラー処理を向上させる - The Rust Programming Language 日本語版

  • これからやる

  • run関数内で利用するところから

  • ん?機能実装した場所またなくなってるな、pushしたはずだが

  • なおしたが、Configのstructの定義がStringなのにsearchの定義がstrになってるな

  • 借用しなきゃだめか

  • 自分の記述みすだったが、借用じゃなきゃだめだなって所に気がつけた

    • やったぜ
  • grepができてそうなので実行する

 cargo run frog poem.txt
   Compiling minigrep v0.1.0 (/Users/r-aizawa/Repository/minigrep)
warning: unused import: `std::vec`
 --> src/lib.rs:4:5
  |
4 | use std::vec;
  |     ^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

warning: `minigrep` (lib) generated 1 warning (run `cargo fix --lib -p minigrep` to apply 1 suggestion)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.28s
     Running `target/debug/minigrep frog poem.txt`
How public, like a frog
  • 上手に動いてそうだ
  • 使っていないimportもある
 cargo run body poem.txt
warning: unused import: `std::vec`
 --> src/lib.rs:4:5
  |
4 | use std::vec;
  |     ^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

warning: `minigrep` (lib) generated 1 warning (run `cargo fix --lib -p minigrep` to apply 1 suggestion)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/minigrep body poem.txt`
I'm nobody! Who are you?
Are you nobody, too?
How dreary to be somebody!
  • 複数マッチの場合
  • いいじゃーーん

NO IMAGE環境変数を取り扱う - The Rust Programming Language 日本語版

  • 環境変数きた
  • goでもstructを使ったイメージ

おまけの機能を追加してminigrepを改善します: 環境変数でユーザがオンにできる大文字小文字無視の検索用のオプションです

  • たしかに
#[test]
    fn case_insensitive() {
        let query = "rUsT";
        // (最後の行のみ)
        // 私を信じて
        let contents = "\
Rust:
safe, fast, productive.
Pick three.
Trust me.";
        assert_eq!(
            vec!["Rust:", "Trust me."],
            search_case_insensitive(query, contents)
        );
    }
}
  • このテストを書かされた
  • 多分引数は同じなのでこう!!
fn search_case_insensitive<'a>(query: &str, contents: &'a str) -> Vec<&'a str> {
    vec![]
}

まとめ

#
  • だいぶ馴染んできた
  • 今回もTDDでメソッドの憶測をした
  • 明日やるところで答え合わせをする

次ここ

NO IMAGE環境変数を取り扱う - The Rust Programming Language 日本語版