Rust part13at TECH
Rust part13 - 暇つぶし2ch980:デフォルトの名無しさん
22/02/11 22:48:24.70 6Qn4bKwU.net
6AYXkq/Gを相手にしても無駄だから元の話に戻りましょう
>>808について自分の意見は
○「型のインスタンスに所有権がある」
×「値に所有権がある」 ←値は途中で完全に置き変わっても構わないため×
×「変数に所有権がある」 ←変数はどんどん移動できて一時的な束縛にすぎないため×
×「アドレスに所有権がある」 ←アドレスは関数へ渡したり返したり途中で変わるため×

981:デフォルトの名無しさん
22/02/11 23:10:21.43 g7TOVgtJ.net
>>961
「所有権がある」という意味が「所有権を持つ」という意味であれば
「値の所有者は変数」だから「所有権を持つのは変数」だよ
スコープを抜ける時に所有リソースを解放する責任というのかownershipを持つということ
型のインスタンス?
説明してもらわないと意味分からないな

982:デフォルトの名無しさん
22/02/11 23:19:43.49 rRV0mw3H.net
>>961
> 値は途中で完全に置き変わっても構わないため
所有権というのは「後始末する責任」のこと。
内容が書き換えられることを許すのは所有権を手放しているわけではない。

983:デフォルトの名無しさん
22/02/11 23:22:41.86 jgApYu5Z.net
>>961
> 「変数に所有権がある」 ←変数はどんどん移動できて一時的な束縛にすぎないため×
変数は移動できなくない? 何か別のことを言いたかったんかな?
変数が所有権を持つ、で良いんじゃないかな
値を変数に束縛するときに、変数が値を所有することになる
そして変数が値を所有したままスコープアウトすると、値をdrop(解放)する

984:デフォルトの名無しさん
22/02/11 23:25:49.74 jgApYu5Z.net
「変数が所有権を持つ」よりも、「変数が値を所有する」のほうがいいか

985:デフォルトの名無しさん
22/02/11 23:27:09.03 6Qn4bKwU.net
主語と目的語を逆に違う意味に誤解されるとわかったので補足します
○「型のインスタンスに対して所有権があるor生じる」
×「値に対して所有権があるor生じる」 ←値は途中で完全に置き変わっても構わないため×
×「変数に対して所有権があるor生じる」 ←変数はどんどん移動できて一時的な束縛にすぎないため×
×「アドレスに対して所有権があるor生じる」 ←アドレスは関数へ渡したり返したり途中で変わるため×
>>962
プログラミング言語の分野で一般的に用いられるインスタンスです
型とインスタンスは一般的に1対多の関係になります (シングルトンでは1対1ですが)
言語によっては型をクラスと表現する場合もあるようですがRustではそんな狭い範囲ではなく全ての型が対象です
>>963
そのように値は変わっていくものだから
値に対して所有権といっても曖昧さが残るでしょう
だから不変でない値に対して所有権があるとの考えはよろしくない
まだ>>964の言う変数を持ち出したほうがマシ
しかし変数との関係は一時的にすぎず所有権は別の変数へ移動していきます
所有権と常に1対1の関係にあるのは(型の)インスタンスです

986:デフォルトの名無しさん
22/02/11 23:32:51.77 rRV0mw3H.net
>>964
変数が所有権を持つというのは変な解釈。
結果的にはそういう挙動ではあるんだが
値が変数に捉えられている間は寿命が継続されるというルールによって
変数のスコープと連動してるだけ。
所有権を持っているのはあくまで値。

987:デフォルトの名無しさん
22/02/11 23:37:03.65 6Qn4bKwU.net
>>967
所有権を持っているのはインスタンスであって
値はそのときどきで変化するだけにすぎない存在だと思います

988:デフォルトの名無しさん
22/02/11 23:39:32.68 rRV0mw3H.net
>>968
いいえ。 そんな定義はないです。

989:デフォルトの名無しさん
22/02/11 23:45:01.94 MSfgatap.net
俺が入れ物に対して所有権があると>>900で書いたのも実質その型のインスタンスだ
インスタンスという言葉を使うと面倒になりそうなので抽象的に型の入れ物とした
いず�


990:黷ノせよ所有権の対象は値ではなく値が収容される入れ物orインスタンスだ



991:デフォルトの名無しさん
22/02/11 23:45:21.67 rRV0mw3H.net
実際のところ「値」と「インスタンス」の間にそんなに意味の差はないです。
特的の型を元に作られたということを強調するときにインスタンスと言うことはありますが、
どの値も型を持つのでインスタンスではない値などありはしません。

992:デフォルトの名無しさん
22/02/11 23:47:31.44 6Qn4bKwU.net
>>971
インスタンスはその型の形をした器(うつわ)であり解放されるまで不変
値はその器(うつわ)に入った内容にすぎず可変

993:デフォルトの名無しさん
22/02/11 23:48:11.08 rRV0mw3H.net
>>972
いいえ。 繰り返しますがそんな定義はないです。

994:デフォルトの名無しさん
22/02/11 23:49:47.15 3qua/k5E.net
>>967
>所有権を持っているのはあくまで値。
で、その値は何の所有権を持ってるのさ?

995:964
22/02/11 23:51:18.52 jgApYu5Z.net
そもそも「所有権を持つ」ってのが苦しい
英訳すると "own the ownership" になってしまうが、そんな表現は公式ドキュメントでも避けられてるように思う
値が変数に束縛されるとき、その値を変数が所有することになる
変数をreturnしたり、変数を他の変数に代入するときには、所有権がtransferされることになる
ここまでは良いでしょ
例えば、公式ドキュメントにもこう書かれてる
URLリンク(doc.rust-lang.org)
> Returning values can also transfer ownership.
なので、強いて >>961 の中から選ぶなら変数が所有権を持つだけど、最初に書いたようにそもそも「所有権を持つ」が苦しいので、
「変数が値を所有する」とすれば良いと思う

996:デフォルトの名無しさん
22/02/11 23:51:21.22 3qua/k5E.net
>>965
>「変数が値を所有する」
これが正解。

997:デフォルトの名無しさん
22/02/11 23:51:57.38 MSfgatap.net
>>973
皆がその点については定義がはっきりしないからこれだけ揉めてるんだろ
「そんな定義はないです」は反論にすらなっていない

998:964
22/02/11 23:53:29.17 jgApYu5Z.net
ああ、別に「持つ」を必ずしも "own" で訳す必要もないね
さっきから変なことばかり書いててすまんね、今日は冷静になっていったんもう寝る

999:デフォルトの名無しさん
22/02/11 23:54:02.65 rRV0mw3H.net
>>974
値自身を後始末する責任をもってる。
所有権という訳語がよくないというのはよく指摘されることだが、
何者かが値を所有しているという誤解のもとになるからだ。
変数が所有権を持っていることにしたら
一時オブジェクトの所有権はどうなってんだって話になるだろ。

1000:デフォルトの名無しさん
22/02/11 23:57:48.33 6Qn4bKwU.net
>>975 >>976
そんな話は誰もしていないと思う
所有権は何に対して付随するのか生じているのかが論点
そして所有権が消滅するのは型のインスタンスが最後に解放される時
だから所有権と1対1の関係にあるのは(型の)インスタンスだと主張しています

1001:デフォルトの名無しさん
22/02/12 00:03:26.33 mURtvSsP.net
>>972
> インスタンスはその型の形をした器(うつわ)であり解放されるまで不変
いいえ。
代入で内容が書き換えられる場合もあり、
そのときに drop が呼ばれます。
寿命の管理は値に付随します。

1002:デフォルトの名無しさん
22/02/12 00:19:59.58 kNBFVDwU.net
とりあえずbookの
4.1. What is ownership?
URLリンク(doc.rust-lang.org)
からOwnership Rulesの節を丸ごと抜いてきた(訳は適当)

Ownership Rules
First, let’s take a look at the ownership rules.
Keep these rules in mind as we work through the examples that illustrate them:
* Each value in Rust has a variable that’s called its owner.
* There can only be one owner at a time.
* When the owner goes out of scope, the value will be dropped.

まずは所有権(ownership)に関するルールを見てみよう
このルールを記憶に留めて以下の例示を読み進めてほしい
・Rustの各々の値(value)は所有者(owner)と呼ばれる1つの変数(variable)をもつ
・所有者は同時に1つしか存在しない
・その所有者がスコープからいなくなる時、その値は破棄される

1003:デフォルトの名無しさん
22/02/12 00:26:03.97 lHDa3hl7.net
>>982
これが正解

1004:デフォルトの名無しさん
22/02/12 00:26:42.42 /iL1/Dd6.net
>>981
内容が書き換えられてdropすることはない
所有権と値は関係ない
値に付随するものではない
>>982に明記されているように所有権を持つ所有者は変数
所有者である変数がスコープから外れるとdrop

1005:デフォルトの名無しさん
22/02/12 00:31:23.69 FSqSWy2H.net
>>982
だよなぁ。「入れ物」とか妙ちきりんな説明する人はなんなんだろう?

1006:デフォルトの名無しさん
22/02/12 00:37:10.88 /iL1/Dd6.net
インスタンスというのも一理ある
その型のインスタンスが作られてから解放されるまで一貫して一つの存在なのに対して
変数は次々と移り変わって行く乗り物と捉えることができる
そしてインスタンスがたまたま束縛されている変数がスコープから消えると乗っていたインスタンスも巻き添えで消えると考えられないこともない

1007:デフォルトの名無しさん
22/02/12 01:06:37.82 Q5zckJeE.net
>>980
スレ立てヨロ

1008:デフォルトの名無しさん
22/02/12 01:26:58.40 aHobc4uM.net
次スレ
スレリンク(tech板)

1009:デフォルトの名無しさん
22/02/12 01:32:16.48 /iL1/Dd6.net
>>988
GJ

1010:デフォルトの名無しさん
22/02/12 01:58:18.50 eWE5dZha.net
横からすまんが、実際のメモリ上だと所有権ってどうなってるもんなの?
>>982にある仕組みからしたら・・・・メモリが確保されるのと同時に、併せて所有権情報(スタックへの参照か何か?)がメモリのどっか確保されるわけ?
俺、てっきりコンパイラへのただの指示だとばっか思ってたぜ

1011:デフォルトの名無しさん
22/02/12 02:19:56.25 dWh4TlR2.net
横からキターーー
コンパイラの課すルールの話なので
所有権情報が実行時にメモリに確保されたりしないよ

1012:デフォルトの名無しさん
22/02/12 04:01:34.21 tNCVqmWf.net
まじか、そうなんだ

1013:デフォルトの名無しさん
22/02/12 06:46:04.75 zeKxBusw.net
ワッチョイ無しか、次スレも荒れそう

1014:デフォルトの名無しさん
22/02/12 07:47:32.16 XghCcbPA.net
struct S;
impl Drop for S {
fn drop(&mut self) {
println!("drop");
}
}
fn main() {
S;
}
↑じゃあこれは何が所有権をもってて何がdropさせてんの?
インスタンス説のほうがまだシックリくる?
変数も所有権を持てるしスコープ終了で手放せる?

1015:デフォルトの名無しさん
22/02/12 08:42:47.12 4ZF6L5uh.net
>>961
お前が突っかかって来たんだろうが
ガイジwwww

1016:デフォルトの名無しさん
22/02/12 08:42:55.77 4ZF6L5uh.net
うんこ

1017:デフォルトの名無しさん
22/02/12 08:43:01.75 4ZF6L5uh.net
まんげ

1018:デフォルトの名無しさん
22/02/12 08:43:06.69 4ZF6L5uh.net
ちんげ

1019:デフォルトの名無しさん
22/02/12 08:43:39.79 4ZF6L5uh.net
>>957
お前の負けやでwwwwwwww

1020:デフォルトの名無しさん
22/02/12 08:44:18.55 4ZF6L5uh.net
無教養のガイジども阿鼻叫喚していて草wっwr
ンゴwwwwwww

1021:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 96日 22時間 39分 19秒

1022:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch