Rustとか言うダブスタ言語 (173レス)
上
下
前
次
1-
新
83
: 2024/10/20(日)09:30
AA×
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
83: [] 2024/10/20(日) 09:30:55.71 C#でいうと var a = new Foo(); var b = a; で a と b が同じオブジェクトを指す状態になるけど、これを許容しないのがRust この場合は b だけが Foo に責任を持つべきで、そのためにaは所有権を無くす (「解放する」ではなく「所有権を移す」だけ) これはメモリ使用量というよりも管理の問題で、「a の操作がbに影響を与える」ことによる複雑性を取り除くために厳しくしてる var a = 1; var b = a; C#でもそうだけど、これはスタックメモリに積まれるもので、単に値コピーされる これは関数を抜ければ解放される (GCのような機構を必要としない) し、C#でもaの書き換えがbに作用しないはず Rustでもこれでaを使えなくする理由はないので単にコピーされる Rustでもオブジェクトを共有する仕組みはあるけど、その場合は共有のための型 (Rc<T> のような型) を使うことになる これは特にマルチスレッドの場合に有用で、スレッドを跨いで共有されるオブジェクトは「ロックをかけないと内部の値にアクセスできない」型で包まないとコンパイルエラーになる仕組みがある これは個人的にすごく便利だと思う部分で、Rustだと安心してコードを書ける感じがする http://medaka.5ch.net/test/read.cgi/prog/1729120072/83
でいうと で と が同じオブジェクトを指す状態になるけどこれを許容しないのが この場合は だけが に責任を持つべきでそのためには所有権を無くす 解放するではなく所有権を移すだけ これはメモリ使用量というよりも管理の問題で の操作がに影響を与えることによる複雑性を取り除くために厳しくしてる でもそうだけどこれはスタックメモリに積まれるもので単に値コピーされる これは関数を抜ければ解放される のような機構を必要としない しでもの書き換えがに作用しないはず でもこれでを使えなくする理由はないので単にコピーされる でもオブジェクトを共有する仕組みはあるけどその場合は共有のための型 のような型 を使うことになる これは特にマルチスレッドの場合に有用でスレッドを跨いで共有されるオブジェクトはロックをかけないと内部の値にアクセスできない型で包まないとコンパイルエラーになる仕組みがある これは個人的にすごく便利だと思う部分でだと安心してコードを書ける感じがする
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 90 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.037s