公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
(コミュニティによる日本語翻訳版もあります: https://doc.rust-jp.rs/book-ja/)
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part37
https://mevius.5ch.io/test/read.cgi/tech/1784283151/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.io/test/read.cgi/tech/1514107621/
Rust part38
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2026/07/24(金) 20:04:25.76ID:24e2kQId2026/07/25(土) 00:10:54.83ID:yA1FjEyp
ついに正解に辿り着いたのか
2026/07/25(土) 00:30:20.59ID:jRf3NZQv
>>58-62
間違いがあるな
ムーブ = ディープコピーだなんて言ってる奴はいない
その人はずっとスタックがpopされる時に移動する値があるという話をしている
なので>>60が言ってることはむしろ>>60自身に当てはまってて、
> Rustはオブジェクトをそのまま値として変数に入れたりムーブできる
> だからオブジェクトの中に参照を持たない限りディープコピーにならない
これには1つ重大な見落としがある
Rustではムーブは所有権を移す行いであるため、メモリの寿命はムーブされた後のスコープによって管理される
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させるディープコピーとならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはないという話だった
逆に、今>>58-62が言ってるのはヒープ領域に限ったムーブの説明にしかなっていないし、>>56の例はスコープが変わっていないのでスタックのpopは発生しないため例として不適切であることになる
そのため、前スレにおける議論よりもずいぶん低レベルで、とにかく相手が言っていることを間違っていると言えれば満足というものに変わってしまっている
間違いがあるな
ムーブ = ディープコピーだなんて言ってる奴はいない
その人はずっとスタックがpopされる時に移動する値があるという話をしている
なので>>60が言ってることはむしろ>>60自身に当てはまってて、
> Rustはオブジェクトをそのまま値として変数に入れたりムーブできる
> だからオブジェクトの中に参照を持たない限りディープコピーにならない
これには1つ重大な見落としがある
Rustではムーブは所有権を移す行いであるため、メモリの寿命はムーブされた後のスコープによって管理される
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させるディープコピーとならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはないという話だった
逆に、今>>58-62が言ってるのはヒープ領域に限ったムーブの説明にしかなっていないし、>>56の例はスコープが変わっていないのでスタックのpopは発生しないため例として不適切であることになる
そのため、前スレにおける議論よりもずいぶん低レベルで、とにかく相手が言っていることを間違っていると言えれば満足というものに変わってしまっている
2026/07/25(土) 00:33:03.68ID:m5hU/HdI
65デフォルトの名無しさん
2026/07/25(土) 00:33:24.06ID:47WIMuh32026/07/25(土) 00:34:11.72ID:bstVFDuM
2026/07/25(土) 00:35:46.32ID:eZT8/Ty+
2026/07/25(土) 00:36:28.79ID:eZT8/Ty+
>>64
ディープコピー(深いコピー)とは - IT用語辞典 e-Words
https://e-words.jp/w/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%82%B3%E3%83%94%E3%83%BC.html
> ディープコピーとは、配列やオブジェクトなどのデータ構造を複製する際、同じ構造の実体を新たに作成して対応するデータを写し取る方式。
Deep copy (ディープコピー) - 用語集 | MDN
https://developer.mozilla.org/ja/docs/Glossary/Deep_copy
> オブジェクトの ディープコピー とは、コピー先のオブジェクトのプロパティがコピー元のオブジェクトのプロパティと同一の参照(同じ値を指す)で共有しないコピー方法のことです。結果として、コピー元かコピー先のどちらかを変更しても、もう一方オブジェクトにも変更を及ぼしていないことを保証できます。すなわち、コピー元かコピー先に意図せずに予期しない変更が加えられるこはありません。この振る舞いはシャローコピーとは対照的です。シャローコピーでは、コピー元かコピー先のどちらかを変更するともう一方のオブジェクトも変更される可能性があります。
> プロパティがすべてプリミティブ値であるオブジェクトのコピーは、ディープコピーとシャローコピーの両方の定義に当てはまります。しかし、このようなコピーの深さについて話すのはやや無意味です。というのも、このコピーには入れ子プロパティがなく、ディープコピーについては通常、入れ子プロパティを変更するコンテキストで話すからです。
ディープコピー(深いコピー)とは - IT用語辞典 e-Words
https://e-words.jp/w/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%82%B3%E3%83%94%E3%83%BC.html
> ディープコピーとは、配列やオブジェクトなどのデータ構造を複製する際、同じ構造の実体を新たに作成して対応するデータを写し取る方式。
Deep copy (ディープコピー) - 用語集 | MDN
https://developer.mozilla.org/ja/docs/Glossary/Deep_copy
> オブジェクトの ディープコピー とは、コピー先のオブジェクトのプロパティがコピー元のオブジェクトのプロパティと同一の参照(同じ値を指す)で共有しないコピー方法のことです。結果として、コピー元かコピー先のどちらかを変更しても、もう一方オブジェクトにも変更を及ぼしていないことを保証できます。すなわち、コピー元かコピー先に意図せずに予期しない変更が加えられるこはありません。この振る舞いはシャローコピーとは対照的です。シャローコピーでは、コピー元かコピー先のどちらかを変更するともう一方のオブジェクトも変更される可能性があります。
> プロパティがすべてプリミティブ値であるオブジェクトのコピーは、ディープコピーとシャローコピーの両方の定義に当てはまります。しかし、このようなコピーの深さについて話すのはやや無意味です。というのも、このコピーには入れ子プロパティがなく、ディープコピーについては通常、入れ子プロパティを変更するコンテキストで話すからです。
2026/07/25(土) 00:39:26.43ID:m5hU/HdI
2026/07/25(土) 00:39:38.81ID:ggq/DgOO
>>63が言ってることと同じことが書いてあるな
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
2026/07/25(土) 00:40:48.47ID:+sd0sCI1
2026/07/25(土) 00:42:53.41ID:m5hU/HdI
>>70
それはディープコピーとシャローコピーの違いと一切の関係がない
それはディープコピーとシャローコピーの違いと一切の関係がない
2026/07/25(土) 00:44:31.56ID:m5hU/HdI
2026/07/25(土) 00:45:27.39ID:YZc0yK18
2026/07/25(土) 00:47:09.32ID:m5hU/HdI
2026/07/25(土) 00:47:38.39ID:lWzgIol7
>>73
まだRVOがディープコピーしてると思ってるの日本語読解力が0どころかマイナスだろ
ディープコピーを防ぐための機能がRVOじゃマヌケ
値をレジスタ返しできないなんてことは関係ない
そもそもレジスタで返されたところでメモリに書き込む必要はあるんだから、レジスタで返せたらすっきり終わりだと思ってる時点で頭が回っていない
というかこの複おじの「レジスタを魔法のストレージだと思っている」現象何なんだ
まだRVOがディープコピーしてると思ってるの日本語読解力が0どころかマイナスだろ
ディープコピーを防ぐための機能がRVOじゃマヌケ
値をレジスタ返しできないなんてことは関係ない
そもそもレジスタで返されたところでメモリに書き込む必要はあるんだから、レジスタで返せたらすっきり終わりだと思ってる時点で頭が回っていない
というかこの複おじの「レジスタを魔法のストレージだと思っている」現象何なんだ
2026/07/25(土) 00:48:38.59ID:v9E5M8Mr
2026/07/25(土) 00:49:49.12ID:EHXKadgF
2026/07/25(土) 00:51:07.13ID:yZnT0yMD
Rustではムーブは所有権を移す行いであるため、メモリの寿命はムーブされた後のスコープによって管理される
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させるディープコピーとならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させるディープコピーとならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
2026/07/25(土) 00:54:07.17ID:0WqDWpvy
The Bookには「there’s a design choices … : Rust will never automatically create “deep” copies of your data」と書いてる
Rustは自動的にディープコピーを作ることは決してない、という設計選択をしている
The Bookの著者が勘違いをしているのか君が勘違いをしているのかどっちだろうね〜?
Rustは自動的にディープコピーを作ることは決してない、という設計選択をしている
The Bookの著者が勘違いをしているのか君が勘違いをしているのかどっちだろうね〜?
2026/07/25(土) 00:55:33.08ID:fqYQyOjc
2026/07/25(土) 00:55:34.81ID:GrgDaK5Z
そこは最適化の有無と関係ない
ムーブは最適化されても最適化されなくてもシャローコピー
ムーブは最適化されても最適化されなくてもシャローコピー
2026/07/25(土) 00:57:20.17ID:BPvLmugh
>>82
そうだとすれば、スタックに置かれたデータはRVOがないとムーブで戻り値として返却できないことになるな
あるかないかわからない最適化がないと返却できない、そんな言語仕様だと君は言いたいのかい?
そうだとすれば、スタックに置かれたデータはRVOがないとムーブで戻り値として返却できないことになるな
あるかないかわからない最適化がないと返却できない、そんな言語仕様だと君は言いたいのかい?
2026/07/25(土) 00:57:25.34ID:m5hU/HdI
2026/07/25(土) 00:59:12.53ID:GrgDaK5Z
2026/07/25(土) 00:59:42.58ID:BPvLmugh
2026/07/25(土) 01:00:42.64ID:m5hU/HdI
2026/07/25(土) 01:00:44.95ID:0WqDWpvy
2026/07/25(土) 01:01:40.71ID:BPvLmugh
Rustではムーブは所有権を移す行いであるため、メモリの寿命はムーブされた後のスコープによって管理される
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させるディープコピー(※)とならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
※MDNの定義であり、一般的
The Bookではビットコピーという変わった言葉が使われることがあるらしい、複オジ情報だから怪しいが
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させるディープコピー(※)とならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
※MDNの定義であり、一般的
The Bookではビットコピーという変わった言葉が使われることがあるらしい、複オジ情報だから怪しいが
2026/07/25(土) 01:02:45.59ID:GrgDaK5Z
2026/07/25(土) 01:02:57.64ID:BPvLmugh
2026/07/25(土) 01:03:59.21ID:IFke0mwN
2026/07/25(土) 01:04:10.58ID:m5hU/HdI
>>89
君だけディープコピーを勘違いしてる
君だけディープコピーを勘違いしてる
2026/07/25(土) 01:04:52.50ID:IFke0mwN
>>93
原文出されて否定されてるのに、まだそれ言ってるの流石に飽きたからもういいよ
原文出されて否定されてるのに、まだそれ言ってるの流石に飽きたからもういいよ
2026/07/25(土) 01:05:50.94ID:m5hU/HdI
2026/07/25(土) 01:06:06.22ID:IFke0mwN
Rustではムーブは所有権を移す行いであるため、メモリの寿命はムーブされた後のスコープによって管理される
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させる実体ごとのコピー(※)とならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
※複オジ定義でディープコピーじゃないということで延々そこにばかり嚙みついて議論を回避しようとするので、複オジ定義の言葉に書き換えてあげました
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごと移動させる実体ごとのコピー(※)とならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
※複オジ定義でディープコピーじゃないということで延々そこにばかり嚙みついて議論を回避しようとするので、複オジ定義の言葉に書き換えてあげました
2026/07/25(土) 01:07:11.67ID:N92SZQwm
>>95
お前がなーw
Deep copy (ディープコピー) - 用語集 | MDN
https://developer.mozilla.org/ja/docs/Glossary/Deep_copy
> オブジェクトの ディープコピー とは、コピー先のオブジェクトのプロパティがコピー元のオブジェクトのプロパティと同一の参照(同じ値を指す)で共有しないコピー方法のことです。結果として、コピー元かコピー先のどちらかを変更しても、もう一方オブジェクトにも変更を及ぼしていないことを保証できます。すなわち、コピー元かコピー先に意図せずに予期しない変更が加えられるこはありません。この振る舞いはシャローコピーとは対照的です。シャローコピーでは、コピー元かコピー先のどちらかを変更するともう一方のオブジェクトも変更される可能性があります。
> プロパティがすべてプリミティブ値であるオブジェクトのコピーは、ディープコピーとシャローコピーの両方の定義に当てはまります。しかし、このようなコピーの深さについて話すのはやや無意味です。というのも、このコピーには入れ子プロパティがなく、ディープコピーについては通常、入れ子プロパティを変更するコンテキストで話すからです。
どう見ても実体のコピーはディープコピーだぞw
お前がなーw
Deep copy (ディープコピー) - 用語集 | MDN
https://developer.mozilla.org/ja/docs/Glossary/Deep_copy
> オブジェクトの ディープコピー とは、コピー先のオブジェクトのプロパティがコピー元のオブジェクトのプロパティと同一の参照(同じ値を指す)で共有しないコピー方法のことです。結果として、コピー元かコピー先のどちらかを変更しても、もう一方オブジェクトにも変更を及ぼしていないことを保証できます。すなわち、コピー元かコピー先に意図せずに予期しない変更が加えられるこはありません。この振る舞いはシャローコピーとは対照的です。シャローコピーでは、コピー元かコピー先のどちらかを変更するともう一方のオブジェクトも変更される可能性があります。
> プロパティがすべてプリミティブ値であるオブジェクトのコピーは、ディープコピーとシャローコピーの両方の定義に当てはまります。しかし、このようなコピーの深さについて話すのはやや無意味です。というのも、このコピーには入れ子プロパティがなく、ディープコピーについては通常、入れ子プロパティを変更するコンテキストで話すからです。
どう見ても実体のコピーはディープコピーだぞw
2026/07/25(土) 01:07:46.10ID:N92SZQwm
>>95
反論されないようにあえて何がディープコピーになるのか言わないようになってて草
反論されないようにあえて何がディープコピーになるのか言わないようになってて草
2026/07/25(土) 01:08:34.16ID:Nxs+SX3U
100デフォルトの名無しさん
2026/07/25(土) 01:09:11.69ID:yHwe+V9G >>96で複オジ定義準拠になったからこれで本題に入れるなw
101デフォルトの名無しさん
2026/07/25(土) 01:10:30.05ID:GrgDaK5Z なぜかMDNのJavaScriptのオブジェクトについてのディープコピーの話を見てるから誤解してるんだろうな
まず重要なことはJavaScriptのオブジェクトは値そのまま変数などへ格納することができない
オブジェクトの値を指す参照が変数はプロパティに格納される
だから深さが一つ異なる
まず重要なことはJavaScriptのオブジェクトは値そのまま変数などへ格納することができない
オブジェクトの値を指す参照が変数はプロパティに格納される
だから深さが一つ異なる
102デフォルトの名無しさん
2026/07/25(土) 01:13:27.60ID:GrgDaK5Z >>97
キミの勘違いがこれで理解できただろう
キミの勘違いがこれで理解できただろう
103デフォルトの名無しさん
2026/07/25(土) 01:14:04.92ID:btBddaoz104デフォルトの名無しさん
2026/07/25(土) 01:15:17.59ID:m5hU/HdI105デフォルトの名無しさん
2026/07/25(土) 01:15:36.67ID:1hCXIcGr106デフォルトの名無しさん
2026/07/25(土) 01:16:23.23ID:1hCXIcGr >>104
シャローコピーの定義が壊れてますよw
シャローコピーの定義が壊れてますよw
107デフォルトの名無しさん
2026/07/25(土) 01:16:54.92ID:1hCXIcGr108デフォルトの名無しさん
2026/07/25(土) 01:19:44.97ID:Q3r5TZlV Rustではムーブは所有権を移す行いであるため、メモリの寿命はムーブされた後のスコープによって管理される
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごとメモリ上で移動させる、全体のコピー(※)とならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
※複オジ定義でディープコピーじゃないということで延々そこにばかり嚙みついて議論を回避しようとするので、複オジ定義の言葉に書き換えてあげました
※複オジ定義のビットコピー? しかし最初はプリミティブ値のことだと言っていたので怪しめ
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごとメモリ上で移動させる、全体のコピー(※)とならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
※複オジ定義でディープコピーじゃないということで延々そこにばかり嚙みついて議論を回避しようとするので、複オジ定義の言葉に書き換えてあげました
※複オジ定義のビットコピー? しかし最初はプリミティブ値のことだと言っていたので怪しめ
109デフォルトの名無しさん
2026/07/25(土) 01:22:02.47ID:2pGX8yaS110デフォルトの名無しさん
2026/07/25(土) 01:23:35.15ID:GrgDaK5Z >>105
MDN確認したがJavaScriptの話しか書かれていない
https://developer.mozilla.org/en-US/docs/Glossary/Deep_copy
Two objects o1 and o2 are structurally equivalent if their observed behaviors are the same. These behaviors include:
1. The properties of o1 and o2 have the same names in the same order.
2. The values of their properties are structurally equivalent.
3. Their prototype chains are structurally equivalent (although when we deal with structural equivalence, these objects are usually plain objects, meaning they both inherit from Object.prototype).
MDN確認したがJavaScriptの話しか書かれていない
https://developer.mozilla.org/en-US/docs/Glossary/Deep_copy
Two objects o1 and o2 are structurally equivalent if their observed behaviors are the same. These behaviors include:
1. The properties of o1 and o2 have the same names in the same order.
2. The values of their properties are structurally equivalent.
3. Their prototype chains are structurally equivalent (although when we deal with structural equivalence, these objects are usually plain objects, meaning they both inherit from Object.prototype).
111デフォルトの名無しさん
2026/07/25(土) 01:26:03.82ID:2pGX8yaS >>110
お前が勝手にそう思ったって感想文はいいからw
そのページの中にJavaScriptのことだという記載がどこにもないし、その親の
https://developer.mozilla.org/en-US/docs/Glossary/
にもそんなことは一言も書かれていない
全部複おじの妄想
お前が勝手にそう思ったって感想文はいいからw
そのページの中にJavaScriptのことだという記載がどこにもないし、その親の
https://developer.mozilla.org/en-US/docs/Glossary/
にもそんなことは一言も書かれていない
全部複おじの妄想
112デフォルトの名無しさん
2026/07/25(土) 01:27:32.17ID:hH2Iz9/v >>107-108が話題を本題に移したから、複おじは雑な定義論争で引っ掻き回せる古い話を続けたくて仕方がない
113デフォルトの名無しさん
2026/07/25(土) 01:33:12.21ID:GrgDaK5Z114デフォルトの名無しさん
2026/07/25(土) 01:35:27.30ID:VVrGpXow115デフォルトの名無しさん
2026/07/25(土) 01:35:56.51ID:VVrGpXow Rustではムーブは所有権を移す行いであるため、メモリの寿命はムーブされた後のスコープによって管理される
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごとメモリ上で移動させる、全体のコピーとならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
しかし、スタックがpopされる場合そのメモリ領域は解放されてしまうため、そのままではムーブしたはずなのにUse-after-freeが発生する
これを防ぐためにはpopされる領域から事前にメモリを書き写す必要があり、これは実体を丸ごとメモリ上で移動させる、全体のコピーとならざるを得ない
これがずっと言われてることであって、Rustの仕様としては完全に正しい
これについて、前スレではReturn Value Optimizationで防がれるという、いい主張があったがこれはコンパイラの最適化によるものであって、仕様として確定したものはない
> it's just like (current) C++ in this regard - it's an optimization, without any guarantees that it'll happen. Not sure if that will change with MIR maturing and rust doing its own pre-LLVM optimizations.
→ これは(現在の)C++とまったく同じで、それが実現するという保証がまったくない最適化です。MIRが成熟し、Rustが独自のLLVM前最適化を行うことで、それが変わるかどうかはわかりません。
https://users.rust-lang.org/t/does-rust-have-return-value-optimization/10389
116デフォルトの名無しさん
2026/07/25(土) 01:36:26.67ID:hAmad9Un コピーされることはないって言い続けてた複おじさん、急に黙ったけど反論マダー?
117デフォルトの名無しさん
2026/07/25(土) 01:37:10.84ID:8wQlg2KP118デフォルトの名無しさん
2026/07/25(土) 01:38:31.06ID:8wQlg2KP >>115
そのRVOは2度のコピーを1度のコピーにする最適化
そのRVOは2度のコピーを1度のコピーにする最適化
119デフォルトの名無しさん
2026/07/25(土) 01:38:43.81ID:8N1fuvKw120デフォルトの名無しさん
2026/07/25(土) 01:39:31.05ID:ZPpanMWX121デフォルトの名無しさん
2026/07/25(土) 01:40:26.25ID:8isXHKT8 複おじは反論が厳しいと気づいたら上げ始めるからわかりやすい
122デフォルトの名無しさん
2026/07/25(土) 01:41:34.80ID:GrgDaK5Z123デフォルトの名無しさん
2026/07/25(土) 01:46:03.63ID:HYCujxnB124デフォルトの名無しさん
2026/07/25(土) 01:48:06.15ID:3pKy/hT/ >>122
複おじさんはずっと勘違いしてるけど、レジスタはメモリじゃないよ
レジスタで返したところで、直後で捨てるんじゃなかったらメモリに書き込むことは確定だからメモリに書くのは前提
RVOはそのメモリに書き込むことを防ぐ最適化
複おじさんはずっと勘違いしてるけど、レジスタはメモリじゃないよ
レジスタで返したところで、直後で捨てるんじゃなかったらメモリに書き込むことは確定だからメモリに書くのは前提
RVOはそのメモリに書き込むことを防ぐ最適化
125デフォルトの名無しさん
2026/07/25(土) 01:49:46.59ID:GrgDaK5Z126デフォルトの名無しさん
2026/07/25(土) 01:49:49.86ID:3pKy/hT/ 戻り値の場合、あらかじめ受け取る側にメモリを用意させておけば、そのメモリに書き込ませてやると戻り値を返す時にコピーしなくていい
127デフォルトの名無しさん
2026/07/25(土) 01:52:26.97ID:wrAT5CQI128デフォルトの名無しさん
2026/07/25(土) 01:52:45.06ID:GrgDaK5Z129デフォルトの名無しさん
2026/07/25(土) 01:54:51.35ID:+kxruos2 >>128
スコープ外のメモリには書き込めないので、そこに書き込ませるという最適化をすることで、元々戻り値をコピーしてメモリに書き込まなければならないという問題をスキップしている、という話をしてるんだぞ
スコープ外のメモリには書き込めないので、そこに書き込ませるという最適化をすることで、元々戻り値をコピーしてメモリに書き込まなければならないという問題をスキップしている、という話をしてるんだぞ
130デフォルトの名無しさん
2026/07/25(土) 01:55:14.41ID:GrgDaK5Z131デフォルトの名無しさん
2026/07/25(土) 01:58:00.23ID:oIMG+RhI >>122
メモリに書き込むべきものをレジスタ上で済ませられるなら済ませる、というのはそれはそれで別の最適化なんだよな
元々メモリに書き込む必要がなければRVOが必要ないのはその通りだが、戻り値をレジスタで返すというのはRVOと同様に不自然な挙動であると言える
本来のスタックとスコープの仕様を考えれば、そこはコピーされることになるからね
メモリに書き込むべきものをレジスタ上で済ませられるなら済ませる、というのはそれはそれで別の最適化なんだよな
元々メモリに書き込む必要がなければRVOが必要ないのはその通りだが、戻り値をレジスタで返すというのはRVOと同様に不自然な挙動であると言える
本来のスタックとスコープの仕様を考えれば、そこはコピーされることになるからね
132デフォルトの名無しさん
2026/07/25(土) 02:00:19.42ID:GrgDaK5Z133デフォルトの名無しさん
2026/07/25(土) 02:02:54.60ID:GrgDaK5Z134デフォルトの名無しさん
2026/07/25(土) 07:11:21.68ID:tifPz07H まだシャベリ場やってたんだ
暑いですね
暑いですね
135デフォルトの名無しさん
2026/07/25(土) 08:25:42.17ID:23WeE0Dk 今日もC++の話で盛り上がっているようですね
136デフォルトの名無しさん
2026/07/25(土) 09:35:59.48ID:MuPBIHa2 Rustも同じだよ
LinuxならSystem V ABI
例えばx86-64なら関数の戻り値は16バイトまでならレジスタ返しraxとrdxで返す
それを超えるとメモリ返し
隠れた第一引数にそのアドレスが渡されて来るのでそこに書き込む
第一引数はレジスタrdiで渡って来る
ここまでは最適化と関係なくABIで決まってる
RVOがないと
一旦ローカル変数用のメモリに書き込んで戻り値を生成
その後に先ほどのrdiが示す場所へコピー
RVOがあると
いきなりrdiが示す場所で戻り値を生成
いずれの場合でもディープコピーは起きない
LinuxならSystem V ABI
例えばx86-64なら関数の戻り値は16バイトまでならレジスタ返しraxとrdxで返す
それを超えるとメモリ返し
隠れた第一引数にそのアドレスが渡されて来るのでそこに書き込む
第一引数はレジスタrdiで渡って来る
ここまでは最適化と関係なくABIで決まってる
RVOがないと
一旦ローカル変数用のメモリに書き込んで戻り値を生成
その後に先ほどのrdiが示す場所へコピー
RVOがあると
いきなりrdiが示す場所で戻り値を生成
いずれの場合でもディープコピーは起きない
137sage
2026/07/25(土) 11:06:55.32ID:gduj764k GPTでRust関連ニュースを予約しとけば良さそう🤔
138デフォルトの名無しさん
2026/07/25(土) 11:49:40.97ID:OE8xb2j5 初代複オジは過去の自分の生き写しかのような二代目複オジを見ていまどういう気持ちなんだろう
139sage
2026/07/25(土) 12:10:30.10ID:gduj764k クソどうでもいいガイジ😂
関わってる奴らもガイジ😂
関わってる奴らもガイジ😂
140デフォルトの名無しさん
2026/07/25(土) 13:02:34.53ID:haFYpz07 Rustの話ができないくせに煽り書き込みには熱心な奴が一番のガイジ
141デフォルトの名無しさん
2026/07/25(土) 13:03:33.41ID:haFYpz07142デフォルトの名無しさん
2026/07/25(土) 13:19:10.32ID:23WeE0Dk Rustは使ってみたいのですが、使い道がないのです
ここを見れば、Rustでなければ作れない素晴らしいソフトウェアや、生産性の劇的な向上の話があると思いました
どうやら、そんなものはないようですね
ここを見れば、Rustでなければ作れない素晴らしいソフトウェアや、生産性の劇的な向上の話があると思いました
どうやら、そんなものはないようですね
143デフォルトの名無しさん
2026/07/25(土) 13:25:03.84ID:lGvZBwSY144デフォルトの名無しさん
2026/07/25(土) 13:25:38.77ID:lGvZBwSY まあ、まずはThe Book開きなよ
いくつか実例やってる間に思いつくかもよ
いくつか実例やってる間に思いつくかもよ
145デフォルトの名無しさん
2026/07/25(土) 13:35:09.27ID:z3bnVdWi 初心者は軽量なコマンドラインツール作ってみるのが良いと思う
muslとか使えばシングルバイナリで配布できるし
muslとか使えばシングルバイナリで配布できるし
146デフォルトの名無しさん
2026/07/25(土) 16:55:41.54ID:Ck2vRTsZ まさにThe Bookに簡易grepがある
147sage
2026/07/25(土) 16:58:32.69ID:TtQEMppw 初心者はThe bookを10周しなさい
148デフォルトの名無しさん
2026/07/25(土) 17:24:51.54ID:23WeE0Dk 使い道がないものに投資するのはムリというものです
娯楽なら、Rustより圏論の方が楽しそうな気がしています
娯楽なら、Rustより圏論の方が楽しそうな気がしています
149sage
2026/07/25(土) 17:57:58.22ID:TEemhTBN ほのかに漂う障害者臭
150デフォルトの名無しさん
2026/07/25(土) 19:22:36.53ID:brc+ZI8q AIに聞けばここ1週間の議論は1分で終わる
業務効率化しろよお前ら
業務効率化しろよお前ら
151デフォルトの名無しさん
2026/07/25(土) 19:54:48.81ID:lGpf3alA まとめ
1. Rustのムーブはディープコピーを行わず、所有権だけを移動する。
2. Copyトレイトを持つ型はムーブ時に値がコピーされるが、これは浅いコピー。
3. 明示的にディープコピーが必要な場合は .clone() を使う。
この設計により、Rustはパフォーマンスと安全性のバランスを保ちつつ、ヒープデータの不必要なコピーを避けます。
1. Rustのムーブはディープコピーを行わず、所有権だけを移動する。
2. Copyトレイトを持つ型はムーブ時に値がコピーされるが、これは浅いコピー。
3. 明示的にディープコピーが必要な場合は .clone() を使う。
この設計により、Rustはパフォーマンスと安全性のバランスを保ちつつ、ヒープデータの不必要なコピーを避けます。
152デフォルトの名無しさん
2026/07/25(土) 20:04:37.90ID:lvMSu3cI このスレ、何割が生成AIの書き込み?
153デフォルトの名無しさん
2026/07/25(土) 20:17:10.43ID:Y9wzz45h ディープコピーが何かを誤解してるアホが一匹
ムーブでディープコピーが起きると暴れてた
ムーブでディープコピーが起きると暴れてた
154sage
2026/07/25(土) 20:23:07.65ID:ubZb3IZ/ 前スレの9割がRustアンチ障害者の書き込み
155デフォルトの名無しさん
2026/07/26(日) 12:34:52.69ID:qnd+P8+f なんかポインタ(Cの)のことをわかっていないもしくは分かる必要がないと思ってる人が多数まじって議論が続いているような気がするのは気のせいか?
156sage
2026/07/26(日) 12:39:03.95ID:vb4kuh8u AIに聞けばわかることをレスバしてる
精神障害者の自作自演
精神障害者の自作自演
157デフォルトの名無しさん
2026/07/27(月) 03:25:54.02ID:kl2EwqW+ 道具だからねぇプログラミング言語なんて
ハサミだろうがカッターだろうが紙を切ることは出来る
安全装置が付いた栽断機をRustとして
Rustなら安全にまっすぐ切れるよって道具であり
別にカッターナイフと定規でもまっすぐ切れるから出来ることは変わらん
excel開きながら電卓叩く奴も世の中多いように
好きな道具で好きにやればいい
ハサミだろうがカッターだろうが紙を切ることは出来る
安全装置が付いた栽断機をRustとして
Rustなら安全にまっすぐ切れるよって道具であり
別にカッターナイフと定規でもまっすぐ切れるから出来ることは変わらん
excel開きながら電卓叩く奴も世の中多いように
好きな道具で好きにやればいい
158デフォルトの名無しさん
2026/07/27(月) 13:01:03.90ID:7knMc1dl 安全装置がついた裁断機は
安全装置を正しく使っている限り
安全装置がついていない裁断機よりは安全
ただし安全装置によって防げる事故というのは
裁断機の利用によって発生しうる事故の一部分でしかなく
裁断作業に危険が伴うことは避けられない
至極当たり前のことだが
これを理解していないRust開発者がなんと多いことか
安全装置を正しく使っている限り
安全装置がついていない裁断機よりは安全
ただし安全装置によって防げる事故というのは
裁断機の利用によって発生しうる事故の一部分でしかなく
裁断作業に危険が伴うことは避けられない
至極当たり前のことだが
これを理解していないRust開発者がなんと多いことか
159デフォルトの名無しさん
2026/07/27(月) 13:07:49.81ID:dac6ESzs そこから得られる結論は
安全装置がないものを使う人は愚か
Rustを使おう
安全装置がないものを使う人は愚か
Rustを使おう
160sage
2026/07/27(月) 13:09:02.48ID:jzehDHuZ safe and unsafe
161デフォルトの名無しさん
2026/07/27(月) 13:16:21.16ID:Vsp0IUpf unsafeは意図的に安全センサーとかを覆い隠したりして
無理矢理動作させる事だね
どうしてもそうしないと出来ないから仕方がなく
だけど、その分危険だから使用者は細心の注意を払うようだと
カーナビの移動時の操作制限を解除してるのとかも
安全のための装置を外すなら使用者がその分安全に注意を払うようなんだよね
無理矢理動作させる事だね
どうしてもそうしないと出来ないから仕方がなく
だけど、その分危険だから使用者は細心の注意を払うようだと
カーナビの移動時の操作制限を解除してるのとかも
安全のための装置を外すなら使用者がその分安全に注意を払うようなんだよね
162デフォルトの名無しさん
2026/07/27(月) 13:21:40.55ID:CWPYRpIU unsafeは使われない
unsafeを使う場合は稟議書を通したりもしくは全員の合意を取ったりするなどいずれにせよ皆の監視対象になる
unsafeを使う場合は稟議書を通したりもしくは全員の合意を取ったりするなどいずれにせよ皆の監視対象になる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 簗農相、自治体予算カット発言を撤回し謝罪 [ぐれ★]
- BDファイター、こめおの蟹ラーメン食中毒騒動での批判に「誰か亡くなったりしたんか?」「追い込みかけて誹謗中傷して、キモすぎ」 [muffin★]
- 【北海道北見市】指定ごみ袋1枚が135円 人口減で財政危機 毎年30億円以上の財源不足 歳入増向けあれやこれや [七波羅探題★]
- 「赤い羽根共同募金運動」始まる 園児たちが呼びかけ [パンナ・コッタ★]
- リュウジ氏 「シャウエッセンが炎上してるらしい」"内容量減らして実質値上げに" に本音 [muffin★]
- 【文春】Mrs. GREEN APPLEギター・若井滉斗が実写版『忍者ハットリくん』でドラマ初主演へ…主題歌はミセスが担当、大森元貴もカメオ出演 [Ailuropoda melanoleuca★]
- 日本人「コーン茶うますぎ!!」めっちゃ流行り始める… [667744927]
- 【速報】簗大臣「発言撤回します」大臣は続ける意向 [931948549]
- 簗(統一協会🏺裏金議員)「非自民自治体の予算を減らしたという言葉を変えれば事実も変わる。聖書にそう書いてあるだろ」 [784319933]
- 【高市悲報】やなちゃん「カーッ!総理から職務を全うするよう指示されたわ🥴これは辞められんなあ」 [359965264]
- 自作PC業界、パーツ高騰の結果いまさらDDR4のマザボが続々と新発売される [573472858]
- 【悲報】高市早苗「財源について心配するのは誤りである。」 [834922174]