以前、読んだ「Swift 実践入門」で、サンプルとして作成するGithub CLI ツールを Rust で書き直してみた。
今回のツールを作成するにあたり、なるべく unwrap を使用しないようにした。 (元々のコードがエラー処理などをちゃんとしているので、真似ただけとも言える。) 今までは、なんとなく書いていると、Option や Result などがあると、unwrap して手を抜いてしまっている場合が多かった。 今回は、独自のエラーの enum を作成するなどしてみた結果、色々と勉強になった。 ただ、下記のような部分は、?演算子で取り出して再び Ok でラップしているので、若干冗長な気がするのだが、一行でかけたりしないのだろうか?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn response(&self, buf: &String) -> Result<SearchResponse<Self::I>, GitHubClientError> { | |
let result = json::decode(&buf)?; | |
Ok(result) | |
} |
あと、やっぱり Swift と Rust は似ているなと思った。 Swift のコードをそのまま写しているような感覚のところも何箇所かあった。 ただ、やっぱり作っていて Rust の方がコンパイラに怒られる回数は多いような気がする。 あと、理解不足が原因だが、Rust の方がなぜコンパイルエラーになっているか考えさせられるところが多々あった。 まだまだ、勉強不足と言うことを痛感した。
ただ、既存のツールを移植してみるというは、とても勉強になったので(題材が良かったというのもあるが) これからもやっていきたい。