Rust part16

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2022/06/27(月) 08:17:03.45ID:gDlfKP6u
公式
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/

※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※次スレは原則>>980が立てること

前スレ
Rust part15
https://mevius.5ch.net/test/read.cgi/tech/1652347700/

0952デフォルトの名無しさん2022/10/06(木) 00:37:42.29ID:4kCBwc0q
>>951
それは違うな
>>949のケースは参照返しをしていないのだからライフタイムは出て来ない
ライフタイムの存在を意識する必要もない

0953デフォルトの名無しさん2022/10/06(木) 01:26:52.37ID:v2j3J5Hy
動くものってなんだよ

0954デフォルトの名無しさん2022/10/06(木) 01:33:20.48ID:QZHh62Nh
Rustを使ってると、参照を返すようなコードはだんだん避けるようになるかもしれないな

0955デフォルトの名無しさん2022/10/06(木) 01:59:47.45ID:iRnDWdOb
競プロみたいにmain関数のみ
データ型は数値のみ
データ構造は固定配列のみ
サイズも高々数百から数千程度なのでスタック確保でオッケー
配列への参照のみ必要
結果は固定配列を新しく作ってそこに詰めていく
これなら所有権など一切いらない

0956デフォルトの名無しさん2022/10/06(木) 02:04:59.09ID:MtARpYSM
この件は数値型や競プロは一切関係ない

ヒープを使うVecやStringやそれらを含む構造体を返しても『値返し』となる点がポイント
『参照返し』とならないため『ライフタイム』は登場せず『所有権』を意識する必要もない
そして『値返し』だけでも様々な実用的なプログラムをRustで作ることができる

0957デフォルトの名無しさん2022/10/06(木) 02:07:29.97ID:iRnDWdOb
ついにlinux kernelにRustがマージされた模様

0958デフォルトの名無しさん2022/10/06(木) 02:38:59.47ID:v2j3J5Hy
>>954
個人的にはdangling pointetとか内部オブジェクトを書き換えられる心配しなくて良くなるから
他の言語より積極的に参照返すようになってる気がする

0959デフォルトの名無しさん2022/10/06(木) 06:12:47.90ID:QjC44cq3
参照返しの安全性を保証できるRustいいよな
参照返しを使わず値返しだけでもかなり広い範囲のことを処理できる点も同意

0960デフォルトの名無しさん2022/10/06(木) 14:46:06.11ID:wkSQkKsv
値返しとか参照返しなんて言葉をRustで使うなよw

0961デフォルトの名無しさん2022/10/06(木) 15:10:52.39ID:9m7OD5Nx
参照を返す時のみ
ライフタイムの概念が登場
だから参照返しと値返しの区別は実質的に重要

もちろんRustでは常に(広義の)値返しとなる
そして参照返しとは参照を(広義の)値返しすること
参照返しの対義語として(狭義の)値返しを使ってもよい

0962デフォルトの名無しさん2022/10/06(木) 15:23:56.79ID:v2j3J5Hy
構造体など参照以外の値がlifetime持つ場合もある
参照だけ区別するのはなぜ

0963デフォルトの名無しさん2022/10/06(木) 15:24:31.16ID:v2j3J5Hy
ここでいうlifetimeはlifetimeパラメーターのこと

0964デフォルトの名無しさん2022/10/06(木) 15:29:37.21ID:phH8VW1M
>>962
それはそのフィールドが参照を返しているね
構造体がライフタイムを持つのはそのような時

0965デフォルトの名無しさん2022/10/06(木) 15:32:28.16ID:mTG1aBjr
> 値返しとか参照返し

これはどこに定義された用語ですか?
それともオレオレ用語ですか?

https://en.wikipedia.org/wiki/Evaluation_strategy
> 3.1 Call by value
> 3.2 Call by reference

値渡し参照渡しは昔からよく聞くけど

0966デフォルトの名無しさん2022/10/06(木) 15:37:35.04ID:mTG1aBjr
最初に言い出したのは

>>952
> >>951
> それは違うな
> >>949のケースは参照返しをしていないのだからライフタイムは出て来ない

これか

0967デフォルトの名無しさん2022/10/06(木) 15:37:37.36ID:ry4GAtyf
>>965
それは関数の引数としての渡し方だから返し方とは独立ではないか

0968デフォルトの名無しさん2022/10/06(木) 15:38:40.62ID:QZHh62Nh
Return by Referenceも知らんのか・・・

0969デフォルトの名無しさん2022/10/06(木) 15:40:52.32ID:mTG1aBjr
どこに定義されてる用語なのかを知りたいだけよw

0970デフォルトの名無しさん2022/10/06(木) 15:45:23.29ID:JBcgzpIo
Rustでは参照返しが有る時だけライフタイムパラメータが付くんよ
例えば3つの参照返しが有る時に3つのライフタイムが異なれば3つのライフタイムパラメータが付くんよ
だから参照返しが有るか無いか区別されてしまうんよ

0971デフォルトの名無しさん2022/10/06(木) 16:06:44.80ID:sWKfpE/G
結局Rustにおける値と参照とは何かを知るためには所有権の理解が必須なワケよ

0972デフォルトの名無しさん2022/10/06(木) 16:15:24.55ID:B9K2Q0k5
by valueの意味が他の言語とは違うからな

0973デフォルトの名無しさん2022/10/06(木) 16:23:06.37ID:bcHprxpF
>>971
参照を返さない限り所有権の理解は不要
Rustでは配列も構造体も更にはヒープを用いるVecやString等も値として返される
つまり参照を返さなくてもある程度の広範囲のプログラムを書くことができる

0974デフォルトの名無しさん2022/10/06(木) 16:33:59.37ID:mb1xnKf4
ムーブのことも忘れないでください

0975デフォルトの名無しさん2022/10/06(木) 16:37:24.79ID:JMKkrzgh
>>974
ムーブする必要ないよな
参照渡しだけしていれば所有権は出て来ないな

0976デフォルトの名無しさん2022/10/06(木) 16:42:22.59ID:bM/kk4ia
所有権要らないならRust要らないじゃんって思いながらずっと読んでる

どういう結論に持っていきたいの

0977デフォルトの名無しさん2022/10/06(木) 16:44:20.49ID:QZHh62Nh
釣りが目的で書き込んでるひとと、それに付き合ってレスしてるひとがいるからわけわからん

0978デフォルトの名無しさん2022/10/06(木) 16:49:39.04ID:+ZB5z2+t
参照渡しだけして参照返しをしなければ
所有権もライフタイムも出てこないからそれらを意識することもない
結果として所有権とライフタイムを理解していなくてもそのスタイルでプログラムを組むことが出来てしまう

0979デフォルトの名無しさん2022/10/06(木) 17:03:06.06ID:HCQdlFdq
>>976
rust 学習の話だろ?
未来永劫所有権の理解は不要なんて誰も言ってないと思うが

0980デフォルトの名無しさん2022/10/06(木) 18:43:34.42ID:rjzElph2
逆にrustだとどういう時に参照返しが必要になるの?

0981はちみつ餃子 ◆8X2XSCHEME 2022/10/06(木) 18:48:14.82ID:rLXZsLBm
>>980
Rust 特有の事情なんかないよ。
C/C++ でポインタや参照で返すときと同じだよ。

0982デフォルトの名無しさん2022/10/06(木) 19:17:16.58ID:mTG1aBjr
「参照で返す」「参照を返す」って表現する人 ←わかる
「参照返し」と言い続ける人 ←???

0983デフォルトの名無しさん2022/10/06(木) 19:27:52.86ID:Q2bZqMfe
同じだろ
参照を渡すことを参照渡し
参照を返すことを参照返し

0984デフォルトの名無しさん2022/10/06(木) 19:40:30.33ID:mTG1aBjr
値渡し参照渡しで言うと依然として単なる値渡しなのに
ただポインタを渡してるだけでそれを
「ポインタ渡し」とか言い出したり
ひどいやつだと「参照渡し」だと言いはったり
そういうのを過去にC言語界隈で見てきたから気になったんよ
独自解釈による珍妙なワードはこの世に必要ないと思うでしょ

>>983
そうですかボクからはもう何も言うことはありません

0985デフォルトの名無しさん2022/10/06(木) 19:48:59.04ID:dbBfkB/k
>>984
それは君が区別すべきことを理解できていないから混乱している
会話や説明では何と何を区別するかが重要
もちろんRustでは常に指定した型そのものが渡され返される
だから区別するとしたら実体を渡したり返したりするのかその参照を渡したり返したりするのかが焦点となる
したがって参照渡しや参照返しという言葉がぴったり適して使われている

0986デフォルトの名無しさん2022/10/06(木) 19:53:30.79ID:mTG1aBjr
あとポインタへのポインタを「ダブルポインタ」って呼んじゃう人もいたな
このスレでは「所有権の複製」ってのもあったな

0987デフォルトの名無しさん2022/10/06(木) 19:58:06.41ID:tLVpM1Ll
>>986
英語でもダブルポインタと言うし何を問題にしているのかわからん
自分勝手な線引きやルールがあってそこから外れると融通が効かなくなるダメな人かね?

0988デフォルトの名無しさん2022/10/06(木) 20:04:50.45ID:aGNYxTl9
ゲームの方のRustで、ホロライブのRustのSeason3が終わるから検索汚染も減るかもな

0989デフォルトの名無しさん2022/10/06(木) 20:12:15.66ID:EteQ2MpB
参照で返すことを「参照返し」と言った途端ブチギレするのマジで意味不明なんだがその呼び方を否定するとどんなメリットがあるのだろうか

0990デフォルトの名無しさん2022/10/06(木) 20:19:33.91ID:bM/kk4ia
意味不明なら言及しなくていいよ

0991デフォルトの名無しさん2022/10/06(木) 20:27:57.49ID:RK7Fg483
>>984を見るとCでポインタで渡すことをポインタ渡しと言われるだけで発狂するようだからその人はキチガイ

0992デフォルトの名無しさん2022/10/06(木) 20:52:03.93ID:lx27AXhR
参照はピリリと辛い

0993デフォルトの名無しさん2022/10/06(木) 20:52:48.54ID:mb1xnKf4
他への参照を持つ実体を返すのは値返しか参照返しかはたまた別の何かか
なんて考えたくない

0994デフォルトの名無しさん2022/10/06(木) 20:58:52.86ID:EteQ2MpB
「ポインタ渡し」がNGなら「ポインタを渡すこと」も日本語でそう表現していいよと言語の開発者がわざわざお墨付き与えなければNGだと思う

0995デフォルトの名無しさん2022/10/06(木) 21:00:15.33ID:99NRyDSB
今回はRustの段階的学習の話だから、これだけのことではないかい。
参照返しが含まれていなければ、ライフタイムを把握する必要がなく、所有権を学習していない段階でも、そのプログラムを書くことができる。
参照返しが含まれていれば、ライフタイムを把握する必要があり、所有権を学習した以降となる。

0996デフォルトの名無しさん2022/10/06(木) 21:05:33.19ID:DNbAbwmR
複オジwを相手にしちゃうからww

0997デフォルトの名無しさん2022/10/06(木) 21:09:49.66ID:Re0G7B20
ぼくちゃんrust入門者
ライフタイム注釈だけはどうにかならなかったのとか思った
でもいろいろ満足
tauriやるぞう

0998デフォルトの名無しさん2022/10/06(木) 21:23:30.56ID:xIsaLol7
ホント毎日毎日アホなこと書いてるなぁ
釣られちゃうRust入門者は少し不憫

0999デフォルトの名無しさん2022/10/06(木) 21:26:14.68ID:ccGjPy8L
>>995
所有権を学ぶのを後ろへずらすことでRust学習の難易度を大きく下げられそうね

1000デフォルトの名無しさん2022/10/06(木) 21:35:40.63ID:jyraEk4K
などと言う嘘つき初心者w

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 101日 13時間 18分 37秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。