Rustで使わない変数名をつけるのとアンダースコアの微妙な違い
変数はブロックの末尾まで生存するが、アンダースコアは変数ではないためその文の中でのみ生存する。どうせ使わないからほぼ同じだが、Dropの順番が異なる。
struct A(&'static str); impl Drop for A { fn drop(&mut self) { println!("dropped: {}", self.0); } } fn main() { let _ = A("x"); let y = A("y"); let z = A("z"); }
dropped: x dropped: z dropped: y
ちなみに、変数名をアンダースコアから始めると、その変数が未使用でも警告が出ない。