A+B
はじめに
Rust が気になっている。プログラミング言語の習得には実際に何かを作ってみるのが最も良いということはわかっているが、作りたいものなど特にない。
というわけで Rosetta codeとかで適当に課題をみつけて実装していこうと思う。
基本方針
- 全体で一つの workspace にして、各 task は member とする
- ソースは github にアップする
- task ごとにブランチを作る
- master と develop を分ける意味を感じないので、master から直接ブランチ/マージする
- どの task をやるかは気分次第
- 気負わずにのんべんだらりとやっていく
A+B
https://www.rosettacode.org/wiki/A%2BB
とりあえず下準備と感覚をつかむことをかねて、簡単な task を実装してみた。Cargo で "a+b" を new しようとしたら '+' が使えなかったので "a_plus_b" で作成した。
cargo new --bin a_puls_b
入力を 1 行受け取ったら、
- trim() で前後の余計な whitespace をトリミング
- split_whitespace() で分割
- map でそれぞれを i32 に変換
- sum() で足し合わせる
これだと別に 2 つの加算ではなく 3 つ以上もできてしまうし、入力の範囲チェック (-1000 <= A,B <= 1000) もしていないが、気にしない。
この程度の task じゃ Rust らしさは全く出ないね。
懸念点
Rust はある程度大きいプログラムじゃないとその良さが活かせないように思う。だとしたら、Rosetta code とは相性が悪いかもしれない。