Rustを勉強中4
実践的なアプリケーションを書いてみよう! Rustの構造化プログラミング【第二言語としてのRust】
写経物
-
- cargo
いわゆるビルドツール
rustcがgccなら、cargoはmake
パッケージ管理も行うのでAnt,Maven,Gradle,cocoa podといった類?
$ cargo new PROJECTNAME --bin
$ cd PROJECTNAME
-
- rsgrep
Unixコマンドのgrepを書いてみようとのこと。以下にざっと実装方針をまとめる
解説
-
-
- ライブラリ機能を盛り込むには以下のように書けば良い
-
-
-
- 標準ライブラリ以外でライブラリを取り込みたい時はソースに以下を記述
-
extern crate クレート名;
e.g. extern crate regex;
-
-
- 標準ライブラリ以外でライブラリを取り込みたい時はCargo.tomlへの記述もお忘れなく
-
[dependencies]
regex = "0.2.1"
-
-
- コマンドライン引数はmatch env::args()で受けて、match式で処理
-
let pattern = match env::args().nth(1)
let filename = match env::args().nth(2)
-
-
- 基本はmatch式とSome,None,Ok,Errで判定し、処理をするブロックが立て続け
-
let reg = match Regex::new(&pattern)
let file =match File::open(&filename)
let line = match line
-
-
- BufReader::new(file)でファイル入力
-
参照型ではなく実体を入れる
-
-
- for line in input.lines()でファイル内容を1行ごとに読み込む
-
-
-
- reg.is_match(&line)でパターンマッチング
-
と言ったような流れ。だいぶリーダブルなコードである。