てがみ: qatacri at protonmail.com | 統計 | 2023

202334003

どうも C++ の参照型とごっちゃになるが、 Rust で &T&&T は違う型である。ただし

fn foo(x: &usize) -> usize {
    *x
}

fn main() {
    foo(&&&&x);
}

これは通る。この挙動は Deref coercion によっていて、 Deref for &Tライブラリ側で定義されている。実は今まで、この coercion は dot 演算子限定で適用されると勘違いしていた。

Deref coercions - The Rust Programming Language

これの一番下だけ読んで勘違いしたのかな。ひどい。

https://github.com/aturon/rfcs/blob/deref-coercions/active/0000-deref-coercions.md