意味
型を具体的に明示するときに使用します。
呼び方はターボフィッシュ(turbofish)。
左辺に型を書くのか、それともターボフィッシュで書くのが良いか?
左辺に型を書くべきかそれともターボフィッシュを使うのかどちらが良いか?
Type Annotation in Binding vs Turbofish · Issue #90 · rust-dev-tools/fmt-rfcs · GitHub
let query_result = users.load::<User>(&db_connection); // VS let users_result: QueryResult<Vec<User>> = user.load(&db_connection);
上と下では上の方が修正しやすいので個人的には良い
確かに、下の例だと全部型を書かないといけないので面倒です。
他の意見では
場合による。collectを使う場合は左辺に明示するのが好み。
もあり、確かに左辺に書いた方が便利な時もあるみたいです。
なぜ必要か
Rustのturbofishを理解する | κeenのHappy Hacκing Blog
ここに書いてありました。
記法がかぶるかららしいです。
小なりと大なりの記法と区別がつかない時があるみたいです。
びっくりした記法
Rustのturbofishを理解する | κeenのHappy Hacκing Blog
let v = Vec::<u32>::new();
ここの例から用いると、vecの初期化で使用するときはこのような記法になりますが、最初これを使用する場面に出会したときに、コロンがいっぱいすぎて、コードを書いていて、正しい記法なのか不安になりました。
感想
ターボフィッシュってなんか響きが良い!