はじめに
#NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる
- 職場でブログのお披露目会してRustを学んだ
- 実は私のポジションでは触らないのだが、普通に面白くて勉強している
今日読む場所
#NO IMAGEファイルを読み込む - The Rust Programming Language 日本語版
お勉強
#メモ
#-
粛々とgrepを作っていく
-
引数は受け取れた
-
use std::io::prelude::*;の書き方してしまってよいのだろうか -
全部importされてしまうが
use std::env;
use std::fs::File;
use std::io::prelude::*;
fn main() {
// --snip--
println!("In file {}", filename);
// ファイルが見つかりませんでした
let mut f = File::open(filename).expect("file not found");
let mut contents = String::new();
f.read_to_string(&mut contents)
// ファイルの読み込み中に問題がありました
.expect("something went wrong reading the file");
// テキストは\n{}です
println!("With text:\n{}", contents);
}
- 写経したけど動かなくね、これ
- おいいいいいいいいいいいいいいいいい
// snipが記述あるかもしれないけど表示しないよってことらしい- しるか!!
use std::env;
use std::fs::File;
use std::io::prelude::*;
fn main() {
let args: Vec<String> = env::args().collect();
let query = &args[1];
let filename = &args[2];
// {}を探しています
println!("Searching for {}", query);
println!("In file {}", filename);
let mut f = File::open(filename).expect("file not found");
let mut contents = String::new();
let read_to_string = f
.read_to_string(&mut contents)
// ファイルの読込中に問題がありました
.expect("something went wrong reading the file");
// テキストは\n{}です
println!("With text:\n{}", contents);
}
- とりあえずこうなった
$ cargo run the poem.txt
Compiling minigrep v0.1.0 (file:///projects/minigrep)
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/minigrep the poem.txt`
Searching for the
In file poem.txt
With text:
I'm nobody! Who are you?
Are you nobody, too?
Then there's a pair of us - don't tell!
They'd banish us, you know.
How dreary to be somebody!
How public, like a frog
To tell your name the livelong day
To an admiring bog!
こうでるらしいが
❯ cargo run the poem.txt
Compiling minigrep v0.1.0 (/Users/ryu.aizawa/Repo/minigrep)
warning: unused variable: `read_to_string`
--> src/main.rs:19:9
|
19 | let read_to_string = f
| ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_read_to_string`
|
= note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
warning: `minigrep` (bin "minigrep") generated 1 warning (run `cargo fix --bin "minigrep" -p minigrep` to apply 1 suggestion)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.49s
Running `target/debug/minigrep the poem.txt`
Searching for the
In file poem.txt
With text:
I'm nobody! Who are you?
Are you nobody, too?
Then there's a pair of us - don't tell!
They'd banish us, you know.
How dreary to be somebody!
How public, like a frog
To tell your name the livelong day
To an admiring bog!
私は誰でもない!あなたは誰?
あなたも誰でもないの?
なら、私たちは組だね、何も言わないで!
あの人たちは、私たちを追放するでしょう。わかりますよね?
誰かでいるなんて侘しいじゃない!
カエルみたいで公すぎるじゃない。
自分の名を長い1日に告げるのなんて。
感服するような沼地にね!
- warningがでるようになった
- unused variableってそのまんまだな
- たしかに使っていないかも
あれ、なんかまちがっていたな
use std::env;
use std::fs::File;
use std::io::prelude::*;
fn main() {
let args: Vec<String> = env::args().collect();
let query = &args[1];
let filename = &args[2];
// {}を探しています
println!("Searching for {}", query);
println!("In file {}", filename);
let mut f = File::open(filename).expect("file not found");
let mut contents = String::new();
f.read_to_string(&mut contents)
// ファイルの読込中に問題がありました
.expect("something went wrong reading the file");
// テキストは\n{}です
println!("With text:\n{}", contents);
}
- こうだ
- 警告も消えた
まとめ
#- 記述間違えていたが、なんか辻褄が合わなくて違うね?と気がつけた
- expectを使っていて、neovim内で戻り値を見るとちゃんとresultになっていて感動した
- 読めるようにもなってきている
NO IMAGEリファクタリングしてモジュール性とエラー処理を向上させる - The Rust Programming Language 日本語版