はじめに
ちょっと年末にかけて、Rustをガッツリ書く機会があったんですが、
Rustを触ったのが久々ということもあり、結構苦戦した部分もありました。
そこでまた忘れないように参考になった記事をここにまとめておこうかなと考えました。
僕のようにまだRust初心者である方にとっても参考になったら幸いです。
参考になった記事紹介
エラーについての記事
Rustでエラーを合成する
この記事を書いたきっかけといってもいいかもしれない。
Result<T, E>
とResult<T', E'>
のEとE'を合成する方法について記述されている。
これについて知らないとJsonのデシリアライズなどで困ることになる。
記事の核となるfailure
のリポジトリはここにあるのでよかったら見てね。
RustのOptionとResult
Optionの便利メソッドとResultの便利メソッドというのが特にいい。
std::option::Optionやstd::result::Resultあたりの公式ドキュメントと一緒に見るとなおよい。
テストについての記事
Writing Tests
日本語版もあるが英語版のほうが若干内容がある。
テストの書き方について教えてくれる。
あとは有名なRustリポジトリのtests
や.travis.yml
を見るのがいいと思う。
文字列についての記事
Rustの文字列操作
多分一番最初に疑問に思う&str
とString
についての違いについてわかりやすく触れている。
&str
についてはライフタイムなども絡むので疑問に思ったらきちんと潰しておきたい。
[Rust] 文字列のフォーマット指定(println! / format!)
タイトルのまんま文字列のフォーマットに関する記事。
もっと詳しく知りたければstd::fmt - Rustあたりを参考にするとよいだろう。
ファイルI/Oについての記事
Rustでファイルの入出力
これに関しては参考になったというか今たまたま「こういう記事が知りたかったんだよなあ。」という感じで見つけたのであげておきます。
ユースケース別にRustでのファイルIOのサンプルコードをあげています。
RustのファイルI/OにはBufReader, BufWriterを使いましょう、という話あたりを最初に頭に入れておくとなおよいかも。
モジュールとクレートについての記事
Rustのモジュールの使い方 2018 Edition版
複数ファイルを扱う際のわかりやすい記事がなかなか見当たらなかったが、これはわかりやすい上にRust2018
に対応した内容になっている。
バイナリクレートとライブラリクレートでごっちゃにならなければあとは大丈夫だろう。
その他
Rust Cookbook
カテゴリ別にライブラリとサンプルコードの紹介がされてています。
カバー範囲が広めなので困ったら一度ここを調べてみるといいかも。
あとは当たり前ですが使用するライブラリのドキュメントやexamplesは役に立ちます。いうまでもないとは思いますが、、
さいごに
Rustは進化するのが早いので時間が立ったらもうその方法は古いということがあるかもしれません。
なので当時のベストプラクティスが今のベストプラクティスだというのは怪しいです。
最新のRustだとこっちの方がよいというのもあると思うので自分でも一度調べてみることをおすすめします。
ですが、ここで喚起するのは基本的に初心者に向けてなので割と普遍的内容だとは思っていて
初心者だったらそこまで気にせずまずは書いてみることもいいとは思うのでそこはおまかせします。