- 1 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:17:03.45 ID:gDlfKP6u.net]
- 公式
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/
- 946 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 12:36:28.49 ID:+KHGV4+/.net]
- 俺はずっとJavaメインで、遊びでlispとかHaskellとか触る程度で低レイヤは触ってなかったんだけど、Rustでここまで現代的に書けるならアリだなって触り始めたクチだな。
- 947 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 12:59:55.95 ID:EKfM3pGK.net]
- >>930
まずハロワやれと言われるレベルの初級者ってプログラミング自体初めてやるようなレベルの人でしょ それならあれこれ教えたところでどうせ理解不能になるだけなのでとりあえず動くものを作らせることには意味がある
- 948 名前:デフォルトの名無しさん [2022/10/05(水) 13:37:41.28 ID:Pj9P59N0.net]
- ただいまんこのあとは
シコシコちんちん シコシコ イソチンチン
- 949 名前:デフォルトの名無しさん [2022/10/05(水) 13:47:37.30 ID:X575+w0V.net]
- かい
- 950 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 15:06:32.60 ID:wne70pEz.net]
- >>930
何を勘違いしてるんだよw ハロワはプログラミングの勉強じゃなくて>>932も書いてる通り環境の勉強だぞ お前の言う必須の要素が何を指してるのか知らんけど例えばif文の勉強したい時に動かせるかどうかは重要だろ
- 951 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 16:08:34.41 ID:l3k0CCzl.net]
- >>934
(安全な)参照は所有権の上に成り立っているよ
- 952 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 16:19:48.70 ID:7FrBhgJk.net]
- >>940
それも真 しかし>>934のような使い方だと所有権を意識する必要すらないのも真 同様に>>934のような使い方だと参照のライフタイムを意識する必要がないのも真 これは類似なものとしてC言語を使っている時に常に所有権とライフタイムを意識する必要性があるわけではないことも同様に例示される
- 953 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 17:04:57.53 ID:NuKocPG+.net]
- 噛み合ってない理由がわかった
競プロ勢が多いんだな 数値しか扱わないなら ベターCとして書くことは容易だからね
- 954 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 17:33:30.37 ID:66O9N6nP.net]
- 競プロじゃないけどトレイトとかよく判らないから安定しているCとしてしか使っていないわ
- 955 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 17:33:54.20 ID:mBRaD/Kx.net]
- >>942
競プロ勢による書き込みが見当たらないこの状況で 妄想により幻覚が見えているのか?
- 956 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- 競プロ勢の炙り出しには成功したみたいだな
- 957 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 23:31:57.40 ID:lcOrUuZN.net]
- 色々書いたうちCLI程度の規模のプログラムだと大半は所有権の移動がなくて所有権の意識が薄いな
オブジェクトをnewするところは厳密には移動と言えるかも知れないが単なる値返しと捉えるだろう あとはオブジェクトの参照を渡していくだけたから単なる参照渡し
- 958 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 23:44:31.07 ID:V7HNybPt.net]
- 毎日毎日息を吐くように嘘を吐く複オジ
控え目に言っても頭おかしい
- 959 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 23:56:41.83 ID:nYqhDlIA.net]
- 数値型だけでは動くものが作れないことに気がついたみたいだな
Rustで所有権を理解せずに動くものを作るなんて柱を使わずに家を建てるようなもの
- 960 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 00:08:02.42 ID:aXzDwmUt.net]
- >>946
関数が値返しと引数可変参照渡しへの書き込みだけならプログラムの規模や種類に関係なくそんなもんだろ 所有権が出てくる幕はない もちろんライフタイムも出てこない
- 961 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 00:34:26.13 ID:XbdFr8Zd.net]
- そういう点では所有権が出てこなくてもかなりの範囲のプログラムを書けるよ
- 962 名前:はちみつ餃子 mailto:sage [2022/10/06(木) 00:34:32.05 ID:rLXZsLBm.net]
- >>949
いくつかの自明な場合にはライフタイムを省略しても暗黙のルールが適用されるから書かなくてもよいだけで、ライフタイムが存在しないわけではないよ。 その暗黙のルールが比較的自然に定義されてるってことなんだろうね。
- 963 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 00:37:42.29 ID:4kCBwc0q.net]
- >>951
それは違うな >>949のケースは参照返しをしていないのだからライフタイムは出て来ない ライフタイムの存在を意識する必要もない
- 964 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 01:26:52.37 ID:v2j3J5Hy.net]
- 動くものってなんだよ
- 965 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 01:33:20.48 ID:QZHh62Nh.net]
- Rustを使ってると、参照を返すようなコードはだんだん避けるようになるかもしれないな
- 966 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 01:59:47.45 ID:iRnDWdOb.net]
- 競プロみたいにmain関数のみ
データ型は数値のみ データ構造は固定配列のみ サイズも高々数百から数千程度なのでスタック確保でオッケー 配列への参照のみ必要 結果は固定配列を新しく作ってそこに詰めていく これなら所有権など一切いらない
- 967 名前:デフォルトの名無しさん [2022/10/06(木) 02:04:59.09 ID:MtARpYSM.net]
- この件は数値型や競プロは一切関係ない
ヒープを使うVecやStringやそれらを含む構造体を返しても『値返し』となる点がポイント 『参照返し』とならないため『ライフタイム』は登場せず『所有権』を意識する必要もない そして『値返し』だけでも様々な実用的なプログラムをRustで作ることができる
- 968 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 02:07:29.97 ID:iRnDWdOb.net]
- ついにlinux kernelにRustがマージされた模様
- 969 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 02:38:59.47 ID:v2j3J5Hy.net]
- >>95
- 970 名前:4
個人的にはdangling pointetとか内部オブジェクトを書き換えられる心配しなくて良くなるから 他の言語より積極的に参照返すようになってる気がする []- [ここ壊れてます]
- 971 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 06:12:47.90 ID:QjC44cq3.net]
- 参照返しの安全性を保証できるRustいいよな
参照返しを使わず値返しだけでもかなり広い範囲のことを処理できる点も同意
- 972 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 14:46:06.11 ID:wkSQkKsv.net]
- 値返しとか参照返しなんて言葉をRustで使うなよw
- 973 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- 参照を返す時のみ
ライフタイムの概念が登場 だから参照返しと値返しの区別は実質的に重要 もちろんRustでは常に(広義の)値返しとなる そして参照返しとは参照を(広義の)値返しすること 参照返しの対義語として(狭義の)値返しを使ってもよい
- 974 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- 構造体など参照以外の値がlifetime持つ場合もある
参照だけ区別するのはなぜ
- 975 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- ここでいうlifetimeはlifetimeパラメーターのこと
- 976 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- >>962
それはそのフィールドが参照を返しているね 構造体がライフタイムを持つのはそのような時
- 977 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- > 値返しとか参照返し
これはどこに定義された用語ですか? それともオレオレ用語ですか? https://en.wikipedia.org/wiki/Evaluation_strategy > 3.1 Call by value > 3.2 Call by reference 値渡し参照渡しは昔からよく聞くけど
- 978 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 15:37:35.04 ID:mTG1aBjr.net]
- 最初に言い出したのは
>>952 > >>951 > それは違うな > >>949のケースは参照返しをしていないのだからライフタイムは出て来ない これか
- 979 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 15:37:37.36 ID:ry4GAtyf.net]
- >>965
それは関数の引数としての渡し方だから返し方とは独立ではないか
- 980 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 15:38:40.62 ID:QZHh62Nh.net]
- Return by Referenceも知らんのか・・・
- 981 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 15:40:52.32 ID:mTG1aBjr.net]
- どこに定義されてる用語なのかを知りたいだけよw
- 982 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 15:45:23.29 ID:JBcgzpIo.net]
- Rustでは参照返しが有る時だけライフタイムパラメータが付くんよ
例えば3つの参照返しが有る時に3つのライフタイムが異なれば3つのライフタイムパラメータが付くんよ だから参照返しが有るか無いか区別されてしまうんよ
- 983 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:06:44.80 ID:sWKfpE/G.net]
- 結局Rustにおける値と参照とは何かを知るためには所有権の理解が必須なワケよ
- 984 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:15:24.55 ID:B9K2Q0k5.net]
- by valueの意味が他の言語とは違うからな
- 985 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:23:06.37 ID:bcHprxpF.net]
- >>971
参照を返さない限り所有権の理解は不要 Rustでは配列も構造体も更にはヒープを用いるVecやString等も値として返される つまり参照を返さなくてもある程度の広範囲のプログラムを書くことができる
- 986 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:33:59.37 ID:mb1xnKf4.net]
- ムーブのことも忘れないでください
- 987 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:37:24.79 ID:JMKkrzgh.net]
- >>974
ムーブする必要ないよな 参照渡しだけしていれば所有権は出て来ないな
- 988 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:42:22.59 ID:bM/kk4ia.net]
- 所有権要らないならRust要らないじゃんって思いながらずっと読んでる
どういう結論に持っていきたいの
- 989 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:44:20.49 ID:QZHh62Nh.net]
- 釣りが目的で書き込んでるひとと、それに付き合ってレスしてるひとがいるからわけわからん
- 990 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:49:39.04 ID:+ZB5z2+t.net]
- 参照渡しだけして参照返しをしなければ
所有権もライフタイムも出てこないからそれらを意識することもない 結果として所有権とライフタイムを理解していなくてもそのスタイルでプログラムを組むことが出来てしまう
- 991 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 17:03:06.06 ID:HCQdlFdq.net]
- >>976
rust 学習の話だろ? 未来永劫所有権の理解は不要なんて誰も言ってないと思うが
- 992 名前:デフォルトの名無しさん [2022/10/06(木) 18:43:34.42 ID:rjzElph2.net]
- 逆にrustだとどういう時に参照返しが必要になるの?
- 993 名前:はちみつ餃子 mailto:sage [2022/10/06(木) 18:48:14.82 ID:rLXZsLBm.net]
- >>980
Rust 特有の事情なんかないよ。 C/C++ でポインタや参照で返すときと同じだよ。
- 994 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 19:17:16.58 ID:mTG1aBjr.net]
- 「参照で返す」「参照を返す」って表現する人 ←わかる
「参照返し」と言い続ける人 ←???
- 995 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- 同じだろ
参照を渡すことを参照渡し 参照を返すことを参照返し
- 996 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- 値渡し参照渡しで言うと依然として単なる値渡しなのに
ただポインタを渡してるだけでそれを 「ポインタ渡し」とか言い出したり ひどいやつだと「参照渡し」だと言いはったり そういうのを過去にC言語界隈で見てきたから気になったんよ 独自解釈による珍妙なワードはこの世に必要ないと思うでしょ >>983 そうですかボクからはもう何も言うことはありません
- 997 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- >>984
それは君が区別すべきことを理解できていないから混乱している 会話や説明では何と何を区別するかが重要 もちろんRustでは常に指定した型そのものが渡され返される だから区別するとしたら実体を渡したり返したりするのかその参照を渡したり返したりするのかが焦点となる したがって参照渡しや参照返しという言葉がぴったり適して使われている
- 998 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- あとポインタへのポインタを「ダブルポインタ」って呼んじゃう人もいたな
このスレでは「所有権の複製」ってのもあったな
- 999 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- >>986
英語でもダブルポインタと言うし何を問題にしているのかわからん 自分勝手な線引きやルールがあってそこから外れると融通が効かなくなるダメな人かね?
- 1000 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
- ゲームの方のRustで、ホロライブのRustのSeason3が終わるから検索汚染も減るかもな
- 1001 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
- 参照で返すことを「参照返し」と言った途端ブチギレするのマジで意味不明なんだがその呼び方を否定するとどんなメリットがあるのだろうか
- 1002 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 20:19:33.91 ID:bM/kk4ia.net]
- 意味不明なら言及しなくていいよ
- 1003 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 20:27:57.49 ID:RK7Fg483.net]
- >>984を見るとCでポインタで渡すことをポインタ渡しと言われるだけで発狂するようだからその人はキチガイ
- 1004 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 20:52:03.93 ID:lx27AXhR.net]
- 参照はピリリと辛い
- 1005 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 20:52:48.54 ID:mb1xnKf4.net]
- 他への参照を持つ実体を返すのは値返しか参照返しかはたまた別の何かか
なんて考えたくない
- 1006 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 20:58:52.86 ID:EteQ2MpB.net]
- 「ポインタ渡し」がNGなら「ポインタを渡すこと」も日本語でそう表現していいよと言語の開発者がわざわざお墨付き与えなければNGだと思う
- 1007 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 21:00:15.33 ID:99NRyDSB.net]
- 今回はRustの段階的学習の話だから、これだけのことではないかい。
参照返しが含まれていなければ、ライフタイムを把握する必要がなく、所有権を学習していない段階でも、そのプログラムを書くことができる。 参照返しが含まれていれば、ライフタイムを把握する必要があり、所有権を学習した以降となる。
- 1008 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 21:05:33.19 ID:DNbAbwmR.net]
- 複オジwを相手にしちゃうからww
- 1009 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 21:09:49.66 ID:Re0G7B20.net]
- ぼくちゃんrust入門者
ライフタイム注釈だけはどうにかならなかったのとか思った でもいろいろ満足 tauriやるぞう
- 1010 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 21:23:30.56 ID:xIsaLol7.net]
- ホント毎日毎日アホなこと書いてるなぁ
釣られちゃうRust入門者は少し不憫
- 1011 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 21:26:14.68 ID:ccGjPy8L.net]
- >>995
所有権を学ぶのを後ろへずらすことでRust学習の難易度を大きく下げられそうね
- 1012 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 21:35:40.63 ID:jyraEk4K.net]
- などと言う嘘つき初心者w
- 1013 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 101日 13時間 18分 37秒
- 1014 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|