[過去ログ] Rust part16 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
955: 2022/10/06(木)01:59 ID:iRnDWdOb(1/2) AAS
競プロみたいにmain関数のみ
データ型は数値のみ
データ構造は固定配列のみ
サイズも高々数百から数千程度なのでスタック確保でオッケー
配列への参照のみ必要
結果は固定配列を新しく作ってそこに詰めていく
これなら所有権など一切いらない
956: 2022/10/06(木)02:04 ID:MtARpYSM(1) AAS
この件は数値型や競プロは一切関係ない
ヒープを使うVecやStringやそれらを含む構造体を返しても『値返し』となる点がポイント
『参照返し』とならないため『ライフタイム』は登場せず『所有権』を意識する必要もない
そして『値返し』だけでも様々な実用的なプログラムをRustで作ることができる
957: 2022/10/06(木)02:07 ID:iRnDWdOb(2/2) AAS
ついにlinux kernelにRustがマージされた模様
958: 2022/10/06(木)02:38 ID:v2j3J5Hy(2/4) AAS
>>954
個人的にはdangling pointetとか内部オブジェクトを書き換えられる心配しなくて良くなるから
他の言語より積極的に参照返すようになってる気がする
959: 2022/10/06(木)06:12 ID:QjC44cq3(1) AAS
参照返しの安全性を保証できるRustいいよな
参照返しを使わず値返しだけでもかなり広い範囲のことを処理できる点も同意
960: 2022/10/06(木)14:46 ID:wkSQkKsv(1) AAS
値返しとか参照返しなんて言葉をRustで使うなよw
961: 2022/10/06(木)15:10 ID:9m7OD5Nx(1) AAS
参照を返す時のみ
ライフタイムの概念が登場
だから参照返しと値返しの区別は実質的に重要
もちろんRustでは常に(広義の)値返しとなる
そして参照返しとは参照を(広義の)値返しすること
参照返しの対義語として(狭義の)値返しを使ってもよい
962(1): 2022/10/06(木)15:23 ID:v2j3J5Hy(3/4) AAS
構造体など参照以外の値がlifetime持つ場合もある
参照だけ区別するのはなぜ
963: 2022/10/06(木)15:24 ID:v2j3J5Hy(4/4) AAS
ここでいうlifetimeはlifetimeパラメーターのこと
964: 2022/10/06(木)15:29 ID:phH8VW1M(1) AAS
>>962
それはそのフィールドが参照を返しているね
構造体がライフタイムを持つのはそのような時
965(1): 2022/10/06(木)15:32 ID:mTG1aBjr(1/6) AAS
> 値返しとか参照返し
これはどこに定義された用語ですか?
それともオレオレ用語ですか?
外部リンク:en.wikipedia.org
> 3.1 Call by value
> 3.2 Call by reference
値渡し参照渡しは昔からよく聞くけど
966: 2022/10/06(木)15:37 ID:mTG1aBjr(2/6) AAS
最初に言い出したのは
>>952
> >>951
> それは違うな
> >>949のケースは参照返しをしていないのだからライフタイムは出て来ない
これか
967: 2022/10/06(木)15:37 ID:ry4GAtyf(1) AAS
>>965
それは関数の引数としての渡し方だから返し方とは独立ではないか
968: 2022/10/06(木)15:38 ID:QZHh62Nh(2/3) AAS
Return by Referenceも知らんのか・・・
969: 2022/10/06(木)15:40 ID:mTG1aBjr(3/6) AAS
どこに定義されてる用語なのかを知りたいだけよw
970: 2022/10/06(木)15:45 ID:JBcgzpIo(1) AAS
Rustでは参照返しが有る時だけライフタイムパラメータが付くんよ
例えば3つの参照返しが有る時に3つのライフタイムが異なれば3つのライフタイムパラメータが付くんよ
だから参照返しが有るか無いか区別されてしまうんよ
971(1): 2022/10/06(木)16:06 ID:sWKfpE/G(1) AAS
結局Rustにおける値と参照とは何かを知るためには所有権の理解が必須なワケよ
972: 2022/10/06(木)16:15 ID:B9K2Q0k5(1) AAS
by valueの意味が他の言語とは違うからな
973: 2022/10/06(木)16:23 ID:bcHprxpF(1) AAS
>>971
参照を返さない限り所有権の理解は不要
Rustでは配列も構造体も更にはヒープを用いるVecやString等も値として返される
つまり参照を返さなくてもある程度の広範囲のプログラムを書くことができる
974(1): 2022/10/06(木)16:33 ID:mb1xnKf4(1/2) AAS
ムーブのことも忘れないでください
975: 2022/10/06(木)16:37 ID:JMKkrzgh(1) AAS
>>974
ムーブする必要ないよな
参照渡しだけしていれば所有権は出て来ないな
976(1): 2022/10/06(木)16:42 ID:bM/kk4ia(1/2) AAS
所有権要らないならRust要らないじゃんって思いながらずっと読んでる
どういう結論に持っていきたいの
977: 2022/10/06(木)16:44 ID:QZHh62Nh(3/3) AAS
釣りが目的で書き込んでるひとと、それに付き合ってレスしてるひとがいるからわけわからん
978: 2022/10/06(木)16:49 ID:+ZB5z2+t(1) AAS
参照渡しだけして参照返しをしなければ
所有権もライフタイムも出てこないからそれらを意識することもない
結果として所有権とライフタイムを理解していなくてもそのスタイルでプログラムを組むことが出来てしまう
979: 2022/10/06(木)17:03 ID:HCQdlFdq(1) AAS
>>976
rust 学習の話だろ?
未来永劫所有権の理解は不要なんて誰も言ってないと思うが
980(2): 2022/10/06(木)18:43 ID:rjzElph2(1) AAS
逆にrustだとどういう時に参照返しが必要になるの?
981: はちみつ餃子 ◆8X2XSCHEME 2022/10/06(木)18:48 ID:rLXZsLBm(2/2) AAS
>>980
Rust 特有の事情なんかないよ。
C/C++ でポインタや参照で返すときと同じだよ。
982: 2022/10/06(木)19:17 ID:mTG1aBjr(4/6) AAS
「参照で返す」「参照を返す」って表現する人 ←わかる
「参照返し」と言い続ける人 ←???
983(1): 2022/10/06(木)19:27 ID:Q2bZqMfe(1) AAS
同じだろ
参照を渡すことを参照渡し
参照を返すことを参照返し
984(2): 2022/10/06(木)19:40 ID:mTG1aBjr(5/6) AAS
値渡し参照渡しで言うと依然として単なる値渡しなのに
ただポインタを渡してるだけでそれを
「ポインタ渡し」とか言い出したり
ひどいやつだと「参照渡し」だと言いはったり
そういうのを過去にC言語界隈で見てきたから気になったんよ
独自解釈による珍妙なワードはこの世に必要ないと思うでしょ
>>983
そうですかボクからはもう何も言うことはありません
上下前次1-新書関写板覧索設栞歴
あと 18 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s