Rustの参照
参照を用いると値の所有権に影響を与えずに値にアクセスできる
Rustの参照は絶対にnullにならない
即ちヌルポにならない
一方で、参照は、参照先よりも長生きしてはいけない
普通に考えるとそりゃそうmrsekut.icon
参照しているのに、参照先が先に死んだら、ダングリングポインタになってしまうからなmrsekut.icon 参照には2種類ある
共有参照
shared reference
immutable, read only
書き込むことはできないが、複数箇所から同時に参照ことができる
可変参照
mutable reference
mutable
読み込みも書き込みもできる
誰か一人が可変参照している間は他のやつは参照できない
可変参照はもちろんだが、共有参照もできない
値に対してアンパサンドを用いた時
code:rs
let x = 5i8;
let y = &x; // yはxへの参照、ポインタ、アドレス
assert_ex!(5i8, *y); // ポインタから値を見るには*
yは、値xへの参照である
つまりyは、アドレスであり値(?)ではない
yの参照している値(ここではx)を見るためには、*yとする
ただ、println!("{}", y);を実行した時は、
本来ならアドレスを出力をするはずだが、
Rustがよしなにやって、*yの値を返す、みたいなのがあった気がする
参照の代入
アドレスを指している変数に別の参照を代入すると、参照の向き先が変わる
アドレスを入れていた変数にはアドレスしか入れられない
参照の参照、参照の比較ができる
参考