はじめに
こんにちは。細々とプログラミングをしているsotanengelです。
この記事は以下の記事の連載です。
他の連載記事 (詳細)
- Day 1:型システムを使ってデータ構造を再現しよう
- Day 2:型システムを用いて共通の挙動を表現しよう
- Day 3:OptionとResultに対してはmatchを用いずに変換しよう
- Day 4:標準のErrorを使おう
- Day 5:型変換を理解しよう
- Day 6:newtypeパターンを活用しよう
- Day 7:複雑な型にはビルダを使おう
- Day 8:明示的なループの代わりにイテレータ変換を使用することを検討しよう
- Day 9:標準トレイトに習熟しよう
- Day 10:RIIパターンにはDropトレイトを実装しよう
- Day 11:ジェネリクスとトレイトオブジェクトのトレードオフを理解しよう
- Day 12:デフォルト実装を用いて、実装しなければならないトレイトメソッドを最小限にしよう
- Day 13:Don't panic
- Day 14:リフレクションを避けよう
- Day 15:可視範囲を最小化しよう
- Day 16:ワイルドカードインポートを避けよう
- Day 17:パブリックインターフェースのドキュメントを書こう
- Day 18:分別を持ってマクロを使おう
- Day 19:Clippyに耳を傾けよう
- Day 20:ユニットテスト以上のものを書こう
また本記事はEffective Rust(David Drysdale (著), 中田 秀基 (翻訳))を参考に作成されております。とてもいい書籍ですので興味を持った方は、ぜひ読んでみてください!
今日の内容
概要
RustにはClippy
というCargoの追加コンポーネントが存在します。
このコンポーネントを使うことで安全で可読性の高いコード開発が可能となります。
使わない変数名
問(リンク)
使わない変数は命名によってはClippyで警告が出ます。
修正してみましょう。
コード (詳細)
fn main() {
// TODO: 使わない変数の記載方法を確認して、以下のコードを修正してください。
let unused_var = 42;
println!("Hello, world!");
}
解答(リンク)
コード参照。
コード (詳細)
fn main() {
let _unused_var = 42; // 変数を使わない場合はアンダースコアで始める
println!("Hello, world!");
}
無駄なクローン
問(リンク)
無駄なクローンはClippyで警告が出ます。
修正してみましょう。
コード (詳細)
fn main() {
let x = 5;
// TODO: 以下は不要なクローンです。修正してください。
let y = x.clone();
println!("{}", y);
}
解答(リンク)
コード参照。
コード (詳細)
fn main() {
let x = 5;
let y = x; // クローン不要
println!("{}", y);
}
非効率な結合
問(リンク)
文字列の非効率な結合はClippyで警告が出ます。
修正してみましょう。
コード (詳細)
fn main() {
// TODO: 非効率的な文字列結合を修正してください。
let s = "Hello".to_string() + " " + &"world!".to_string();
println!("{}", s);
}
解答(リンク)
コード参照。
コード (詳細)
fn main() {
let s = format!("{} {}", "Hello", "world!"); // `format!`を使用して効率的に結合
println!("{}", s);
}
さいごに
もしも本リポジトリで不備などあれば、リポジトリのissueやPRなどでご指摘いただければと思います。