Bluemo's Brain

Search

Search IconIcon to open search

Rustの所有権

Last updated Unknown Edit Source

    from 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 つだけか、不変な参照が複数かのどちらかが許可されます。両方を同時には使用できません。 - > 参照は所有者よりも長く存在してはなりません。