Rustの所有権
Rustの所有権
スコープ外れたら自動でdropする
dropは階層structの場合親から
より正確にいうと、「所有権が何かに結びついた時のブロックのスコープ」を抜けるとdropする
所有権が何かに結びついた時とは:
変数の宣言 let a = b
引数に変数自体を渡す f(a)
関数呼ぶ時に値を渡す(ownershipを渡す)と、その関数のスコープの終わりでdropされる
これ驚き
それが困るなら、ownershipを渡すのではなく、閲覧権を貸す
&で
借りる方の引数の型も、Fooではなく&Foo
この時、元のやつへの参照アドレスをメモリが持つ感じか
参照外し
参照元の値を得たい時(&TをTに変えたい時)は、*を付ける
自動の参照外しもある
単純な算術演算子で計算する時は自動的に&TをTに変換してくれる
なぜ?
+関数とか-関数を通してるから、関数の引数の&TはTとして扱えるみたいな感じかな
編集権を貸すこともできる
面白い
貸してる間は、元のやつは編集できない
編集権持ってるやつは一つだけにしようという考え方
貸してるやつがdropされたら、編集権は帰ってくる
貸してるやつを通じて元の値をget/setする時は、*をつける
rules
Rust では、可変な参照が 1 つだけか、不変な参照が複数かのどちらかが許可されます。両方を同時には使用できません。
参照は所有者よりも長く存在してはなりません。