Rust part11

レス数が1000を超えています。これ以上書き込みはできません。
2021/06/17(木) 00:24:12.56ID:NvYoNP9C
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/

前スレ
Rust part10
https://mevius.5ch.net/test/read.cgi/tech/1617367084/
982デフォルトの名無しさん
垢版 |
2021/08/24(火) 15:09:04.48ID:KCG/N/Sb
rustってどうやって二重開放のリスク防いでるの?全然ピンとこない
2021/08/24(火) 15:50:18.44ID:tu56M8w7
ownershipが1つしかない状態を維持しつつownershipが0になったら(確実に)解放する感じ

ownershipはどこかの変数が直接的or間接的に保有してて
同じリソースに複数のownershipが発生しないように
代入とか関数の受け渡しでmoveしたりborrowしたりする

少し逸れるけど解放処理を必要としないデータはCopy可能な場合が多い
ownershipは「所有権」て訳されるけど意味的には「解放権」とか「解放責任」に近いかも
2021/08/24(火) 16:38:09.46ID:Cd1Pd2YU
>>977
公式の見解を個人の感想と一緒にするなよ
2021/08/24(火) 17:46:18.00ID:uCQTu6bl
Rustで循環参照作るの簡単とか言ってるやつは100%エアプだからほっといてやれ
他言語での経験をあたかもRustで経験したかのように語りたかったんだろう
2021/08/24(火) 18:15:27.00ID:otdRB8MX
>>985
メモリリークの原因になるかどうかを別にすれば、循環参照自体は普通に簡単に生じるだろう
2021/08/24(火) 18:45:16.53ID:tu56M8w7
unsafeでポインタ使えば簡単だろうけどライフタイムのある参照の循環は大変そう
'a > 'bと 'b > 'aを両立は不可能に見えるけど何か抜け道あるのかな
2021/08/24(火) 18:55:37.63ID:SZKxopPy
循環参照どころか連結リストも荷が重い
989デフォルトの名無しさん
垢版 |
2021/08/24(火) 19:43:21.83ID:KCG/N/Sb
>>983
なるほどサンクス
リージョン理論に線形論理を上手く組み合わせて、cycloneとかの欠点を克服したrustってすげーなあ
とはいってもそもそも二重開放してエラーになるというのがピンとこない
free(a);
free(a);
は二重解放しているように見えて合法だろ?
一度目のfreeでaにNULLが代入されて、二度目のfreeでは引数がNULLの場合はそのままreturnって処理されるんだから、理論上は何度free使ってもエラーにならないじゃないか
2021/08/24(火) 19:58:14.02ID:Mn5s1DvN
何の話? C?
2021/08/24(火) 20:39:00.27ID:972JwtmU
>>980
>Rustで循環参照が起きるにはRc利用が必須
RcだけじゃなくRcとInterior Mutabilityが必須
(どちらか片方はmutableじゃないと循環させられないので)

>Weak(弱参照)を適切に上手く用いて循環参照を避けるのが大変な場合もあるが
Rustの場合は循環参照で意図通り動くコードを書くのに比べれば
弱参照に変更するのはすごく簡単

循環参照を修正してる例
https://github.com/DataDog/glommio/commit/677fe1dfbaf911245fbc5c3eef75532d08d784bf
https://github.com/KWARC/rust-libxml/commit/bd4b120b90b2568ca6d5bfaa368a200573b87d09
992デフォルトの名無しさん
垢版 |
2021/08/24(火) 20:58:14.10ID:joymTvc2
すまんが、複数のファイルにソースを分割する練習教材みたいなものがあったら教えてくれんか?
2021/08/24(火) 22:56:02.07ID:972JwtmU
次スレ
https://mevius.5ch.net/test/read.cgi/tech/1629813327/
2021/08/24(火) 23:03:55.04ID:PednkAUi
>>992
「book」にもモジュールの章がある。
2021/08/24(火) 23:31:00.93ID:OsSSnb/8
>>987
RcとRefCell使えば数行
2021/08/24(火) 23:45:46.97ID:MkJE9y3A
循環によって現れるメモリリークは Rust が提供する「メモリ安全」を損なわないと定義されている。
Rust は循環参照を防がないし、メモリリークに対処するのはプログラマの責任。
2021/08/25(水) 00:57:06.67ID:3XgQgETH
>>992
もう見てるかもだが
http://www.sheshbabu.com/posts/rust-module-system/
998デフォルトの名無しさん
垢版 |
2021/08/25(水) 01:28:54.33ID:6n+Di1sM
>>990
c
999デフォルトの名無しさん
垢版 |
2021/08/25(水) 01:29:12.12ID:6n+Di1sM
うんこ
1000デフォルトの名無しさん
垢版 |
2021/08/25(水) 01:29:33.60ID:6n+Di1sM
1000ならここにいるやつら全員失職
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 69日 1時間 5分 21秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況