探検


Rust part37

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2026/07/17(金) 19:12:31.24ID:yl11920u
公式
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/

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

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

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

前スレ
Rust part36
https://mevius.5ch.io/test/read.cgi/tech/1779974768/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.io/test/read.cgi/tech/1514107621/
2026/07/18(土) 21:25:13.54ID:mpqSgeiL
>>134
また荒らしが出るからあんま上げんなよ
137デフォルトの名無しさん
垢版 |
2026/07/18(土) 21:25:20.15ID:oKB3ZhEO
572 デフォルトの名無しさん sage 2026/07/01(水) 01:14:29.65 ID:E4CfZuIc
Announcing Rust 1.96.1
https://blog.rust-lang.org/2026/06/30/Rust-1.96.1/

573 デフォルトの名無しさん sage 2026/07/01(水) 02:21:36.27 ID:5WKZWNdO
原因が辛いな

CVE-2025-15661
Updated: 2026-06-23
Title: libssh2 - Heap Buffer Over-read via sftp_symlink() in sftp.c

CVE-2026-55200
Updated: 2026-06-18
Title: libssh2 - Out-of-Bounds Write via Unchecked packet_length in transport.c
2026/07/18(土) 21:26:14.67ID:LnTcQuPa
Cのせいにするなとか被害妄想してる奴が湧いたアプデだろ
2026/07/18(土) 21:31:04.33ID:bhJjxK5U
sshもRustで書き直すしか
140デフォルトの名無しさん
垢版 |
2026/07/18(土) 21:37:05.31ID:3wFsDlQx
おじいちゃん起きたのね
2026/07/18(土) 21:37:44.33ID:66OI5PtW
複オジが逆認定するようになったのか
書いてる内容バレてるのにな

複オジが不要にスレ伸ばすときは
その直前の恥ずかしいレスを流したいとき
2026/07/18(土) 21:40:15.59ID:/BwM9PLt
ID:S/Q9GBk8, ID:bhJjxK5U, ID:PQcA2rQz, ID:9maZOq/z, ID:csslsvGN, ID:tnY5WOXG, ID:nqHGciLl, ID:3wFsDlQx

今日の複おじID
2026/07/18(土) 21:40:45.93ID:mxZyxsu9
>>141
これ
2026/07/18(土) 21:41:17.55ID:dsXaqiMB
だから複おじはスレ上げたがる
2026/07/18(土) 21:45:40.96ID:vuvFx/eF
その脆弱なlibsshをRust化すべき
2026/07/18(土) 21:50:55.20ID:IzFYUrTj
授乳してくる
2026/07/18(土) 21:57:30.52ID:X21kI3ky
複オジは荒らしでかつIDコロコロするから印象が悪い
148デフォルトの名無しさん
垢版 |
2026/07/18(土) 22:02:57.35ID:5aZfHUDW
Rustアンチの障害者
脳みそC++
2026/07/18(土) 22:03:11.70ID:H0jNYHKI
>>147
もしかして複おジ
2026/07/18(土) 22:04:36.67ID:999Zs8cJ
>>149
何言ってんだこいつ
2026/07/18(土) 22:05:12.36ID:NkcqNtb5
>>145
既存資産が一斉に入れ替わらんのはしゃーない
2026/07/18(土) 22:12:32.82ID:BkyklCKZ
Rustは書きやすいからいいわ
Pythonくらい当たり前になっていい
2026/07/18(土) 22:15:20.74ID:oDuxzRvZ
Pythonで書いて、AIにRustへ移植させた方がいい
2026/07/18(土) 22:59:40.08ID:XKrPaHgp
あっちこっちのスレが複おじに汚染されてるな
伸びてるスレは特に
2026/07/18(土) 23:24:01.55ID:oDuxzRvZ
自分が気に食わない奴を雑に複おじ認定してるだけだろ
2026/07/18(土) 23:30:11.78ID:qacgjZ69
Pythonで書いてRustに移植させるとか無駄すぎる
最初からRustで書けばいい
2026/07/18(土) 23:46:18.98ID:qLwxAYh5
慣れてしまえば制約がキツイと思い込んでいたRustがほとんど自由に書けることに気付く
2026/07/18(土) 23:47:26.65ID:ZwCHK2vP
自然とイメージできるようになるよな
2026/07/18(土) 23:58:11.26ID:aTA5mv7+
Rustはかなり自由
どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
どんな値でも、それが自分で作ったものでも、関数の引数として受け取ったものでも、他の関数から返ってきたものでも、関数から必ず返せる
2026/07/18(土) 23:59:00.72ID:LVaDdD2c
>>159
また複おじがめちゃくちゃ言ってるな
2026/07/19(日) 00:00:03.14ID:NTqXfncQ
もう放っとけよ、前スレからずっと同じコピペで荒らしてる奴だし
2026/07/19(日) 00:01:50.45ID:pcmNMsjJ
>>159
まあそう思うならRust書いてみたら?
入門書のリンクも貼っといてやるからさ
https://doc.rust-jp.rs/book-ja/
163デフォルトの名無しさん
垢版 |
2026/07/19(日) 00:03:36.85ID:QfQD4mwM
>>159
それは出来て当たり前
出来ないことは手元にある値の参照を返すことだけ
2026/07/19(日) 00:03:47.21ID:lZWKkSc7
ライフタイムについて知らないド素人もおるんやなあ
2026/07/19(日) 00:05:50.51ID:RWX6Mgcf
>>163
出来て当たり前じゃなくて、同期処理してる時だけだぞ
2026/07/19(日) 00:09:24.83ID:qvC4J9mt
同期処理してれば当然できる
親の方が子より長生きで当然

非同期だとできないこともある
親の方が子より長生きとは限らない
2026/07/19(日) 00:13:38.84ID:PmbNkHZM
非同期でも>>159の文章は必ず成り立つ
168デフォルトの名無しさん
垢版 |
2026/07/19(日) 00:14:25.51ID:M9KOhBFP
>>167
ArcやRcも参照に入れればそうやな
2026/07/19(日) 00:28:34.18ID:efdwttHT
参照カウント式の管理を「参照」だけで語るのは流石に無理かな
それも「必ず」と言ってしまってるわけで
2026/07/19(日) 00:40:34.45ID:liYBpHZW
関数って呼ばれるものの幅って結構広いからね
たぶん>>167の想像にないものがある
2026/07/19(日) 01:21:09.10ID:e7yB+pI/
そもそも参照って曖昧にせずに借用って言えば解決する
172デフォルトの名無しさん
垢版 |
2026/07/19(日) 01:23:36.03ID:jaOC3QMl
cargo check通れば安全と同じこと言いたいんじゃね
2026/07/19(日) 01:30:57.28ID:GVCMKu1f
>>159の関数がasync関数でも成立してる
2026/07/19(日) 01:32:36.58ID:c6sxkJh6
流石に色々無理が生じてきてるなあ
2026/07/19(日) 01:32:50.70ID:GVCMKu1f
>>168
ArcやRcは参照ではなく所有
2026/07/19(日) 01:33:42.90ID:0R5aWyYh
>>172
どんなテストでもツールでもそれだけを妄信しちゃいかんのにな
「必ず」とか言い出す奴はだいたいダメ
2026/07/19(日) 01:35:51.00ID:GVCMKu1f
>>159は必ず成立する
反例はない
2026/07/19(日) 01:37:32.53ID:JZtLLXX2
関数の範囲をできるだけ狭めて、参照の範囲をできるだけ広げれば、はい
2026/07/19(日) 01:38:17.82ID:L9V97nS8
定義を都合よく曲げるのはよくない
2026/07/19(日) 01:39:33.10ID:GVCMKu1f
参照は&Tだろ
関数はfnだろ
async fnでも同様に>>159は成立
2026/07/19(日) 01:41:54.40ID:iHrJKnes
いかなるライフタイムでもと言い切ってるからなあ
それだと成立しないと思われる
「コンパイルが通れば」みたいな言ってない条件を勝手に追加してそう
2026/07/19(日) 01:45:00.32ID:JZtLLXX2
「どんな参照でも必ず返せる」は「いずれかの参照なら必ず返せる」とは真逆の意味なんでなあ
全部返せないと成立しない
2026/07/19(日) 01:46:06.97ID:GVCMKu1f
少なくとも>>159は任意のライフタイムで必ず成立する
成立しないと思う人は反例コードを示せばいい
2026/07/19(日) 01:54:15.82ID:RCcAcUe+
弱参照を受け取ってそれを通常の参照に変換して返す関数を書いてみて
2026/07/19(日) 01:56:48.64ID:RCcAcUe+
今のAIだとこのくらいは簡単か
2026/07/19(日) 02:01:08.20ID:2iSHfWbm
しょうがないにゃあ

fn foo<'a, 'b, T>(o: &'a mut Option<&'b mut T>, v: &'b mut T) -> &'b mut T {
*o = Some(v);
v
}
2026/07/19(日) 02:56:53.38ID:GVCMKu1f
>>184
弱参照は指す先が無効になってる場合も安全に扱えるようにするためのもの
だから参照への変換は原理的に不可能
弱参照自体は返すことがてきる
2026/07/19(日) 02:58:13.82ID:GVCMKu1f
>>186
それは可変参照が借用中に同時に可変参照を使えないだけ
借用を終えたら可変参照も返すことができる
2026/07/19(日) 03:11:42.53ID:GVCMKu1f
ここまでに>>159の反例コードを示せた人なし
2026/07/19(日) 05:23:51.53ID:JZtLLXX2
どんどん条件付け足して反例なしって言うの不毛すぎる
2026/07/19(日) 05:25:16.00ID:JZtLLXX2
どんな参照でも返せるって言ったんだから、ID:GVCMKu1fは言い訳してないで条件を変えずに通せる方法を書けよ
2026/07/19(日) 05:30:54.76ID:R3XW/jFb
そもそもどんな参照でもどんな関数でもって条件だから、他のスレッドから借用した場合も対象だよね
しかも条件を何もしてしてないから、本体側のスレッドが先に死んでもいい
これはコンパイルを絶対に通らない条件なので不成立だけど、どんな参照でもどんな関数でも返せるという主張の反例にはなってる
まあ、また条件を増やすかもしれないがw
2026/07/19(日) 05:32:39.47ID:GVCMKu1f
>>191
新たな条件を一つも加えていない
引数で受けた弱参照も必ず返せる
引数で受けた可変参照も必ず返せる
今回の元の文章は以下のように書かれている

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 05:34:18.67ID:GVCMKu1f
>>192
それは以下の反例になっていない

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 05:34:52.88ID:uDfx31sS
そのうち「コンパイルを通る場合で」とか言い出しそう
コンパイルを通るならボローチェッカーの検証済みだから必ず成立する、だからこの条件でトートロジーにできる
2026/07/19(日) 05:37:02.31ID:hgCgzwLk
>>194
thread::spawnは関数じゃマヌケ
2026/07/19(日) 05:38:10.14ID:JZtLLXX2
早すぎて笑った
2026/07/19(日) 05:40:08.69ID:lZWKkSc7
つまり>>192
どんな寿命の参照でも → 当然 ○
それを関数の引数で受け取ったら → thread::spawnは関数なので ○
その参照や一部の参照を、関数から必ず返せる → 本体側のスレッドが先に死んだら不成立 ×
ってことか
2026/07/19(日) 05:41:27.23ID:GVCMKu1f
>>196
参照を引数に取らない関数も参照を返さない関数も無数にあるのは当たり前
それは無関係な話
自分で作る関数が引数で受けた参照を常に返せるかの話しかなされていない
2026/07/19(日) 05:43:17.97ID:pVNBiKRX
>>199
また勝手に条件増やしてて草
2026/07/19(日) 05:43:42.64ID:GVCMKu1f
>>200
条件は一切増えていない
2026/07/19(日) 05:44:10.89ID:8bVK7uZA
>>199
スレッドを作る関数を自分で作れないとする根拠がないと成り立たない主張だということは気付いてるのか?w
2026/07/19(日) 05:44:51.96ID:8bVK7uZA
>>201
ハイ嘘
> 自分で作る関数が引数で受けた参照を常に返せるかの話しかなされていない
こんなことはここまで言っていない
2026/07/19(日) 05:46:07.72ID:GVCMKu1f
>>202
もちろん何を作っても構わない
以下は必ず成立する

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 05:47:07.17ID:8bVK7uZA
>>204
ハイ嘘
thread::spawnと同じ機能を持つ関数を作ると不成立
2026/07/19(日) 05:48:30.91ID:ksx89YE4
しかもシステムコールするだけの結構簡単な関数なの草
2026/07/19(日) 05:50:20.75ID:GVCMKu1f
>>205
それは以下に明記されてる前提を満たせないから明らかに対象外
「関数の引数で受け取ったら、」

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 05:50:21.46ID:OKx6aoV/
>>195
そろそろ本当に「返せるように書けば」って言いそうw
2026/07/19(日) 05:51:43.97ID:ChE1xJ7G
>>207
どう見てもthread::spawnは引数で受け取ってますねw
2026/07/19(日) 05:52:50.17ID:JZtLLXX2
関数の引数で受け取ったら ←これは疑う余地ない件
むしろ参照をスレッドに渡す設計はよくないとか言って話をそらした方がまだ戦えるレベル
2026/07/19(日) 05:54:28.00ID:GVCMKu1f
>>209
spawnの引数が何なのか知らない無知な人は勉強して出直してきてね
2026/07/19(日) 05:56:49.23ID:Rf75bjax
>>211
「引数で受け取ったら」って書いたのはお前じゃいw
「引数に参照を取る関数」なんて書いてない
2026/07/19(日) 05:57:55.40ID:Rf75bjax
thread::spawnの引数で参照を扱うことはもちろん可能
実際 'static ライフタイムになっていれば受け渡せる
2026/07/19(日) 05:58:01.87ID:GVCMKu1f
Rustでは付加条件なく必ず成り立ちます

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 05:59:31.74ID:Rf75bjax
>>214
ついに反論できなくなって逃げたな
反例: thread::spawn()
2026/07/19(日) 06:01:44.05ID:Jl4j9YwN
そもそも「引数に参照を取る関数」に書き換えたところでそういう引数を受け取るようにスレッドを作る自作関数を作ればそれで成り立たなくなる模様
2026/07/19(日) 06:03:21.76ID:GVCMKu1f
>>215
反例になっていない
まずspawnの場合は引数はクロージャ
クロージャでキャプチャされてきた参照は必ず返すことができる
2026/07/19(日) 06:04:15.48ID:EmK47w2v
>>217
「引数で受け取ったら」って書いたのはお前
「引数に参照を取る関数」なんて書いてない
2026/07/19(日) 06:04:45.12ID:GVCMKu1f
>>216
まずは>>159の反例コードを作ってみたら?
まだ誰も示せてないから
220デフォルトの名無しさん
垢版 |
2026/07/19(日) 06:05:39.46ID:G8pyxalB
Pin止め忘れたFutureの参照はどう?
条件に合ってるけど死なないかな
だからUnpin設計する羽目になったわけだし
2026/07/19(日) 06:05:55.54ID:lZWKkSc7
「どんな寿命の参照でも」って言いきった以上今更「返せる寿命なら」って言ったらそれはそれで条件を変えてる
2026/07/19(日) 06:06:21.26ID:GVCMKu1f
>>218
論理が苦手なのかな
>>159の反例を示せないといけないんだよ
2026/07/19(日) 06:08:09.37ID:Uh8aYRzM
>>222
アホめ
そっちは「他の関数から返ってきたものでも」とも書いてるから余計にドツボなんじゃ
2026/07/19(日) 06:08:26.36ID:GVCMKu1f
>>221
どんな寿命の参照でも大丈夫
Rustではそれを関数の引数で受け取ったら関数から必ず返せる

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 06:09:15.94ID:ksx89YE4
元より条件狭めてもなお敗北してるの草
2026/07/19(日) 06:09:27.47ID:GVCMKu1f
>>223
もし反例があるならRustコードで示しましょう
2026/07/19(日) 06:09:47.03ID:ksx89YE4
>>224
反例: thread::spawn()
2026/07/19(日) 06:10:09.25ID:ksx89YE4
>>226
反例: thread::spawn()
2026/07/19(日) 06:10:41.97ID:GVCMKu1f
>>225
条件は以下の元の文章一切変更していない
この元の文章のまま必ず成り立つ

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 06:11:42.73ID:UBIO/xPU
>>229
反例: thread::spawn()
2026/07/19(日) 06:13:16.83ID:GVCMKu1f
>>227
spawnでも成り立ってますよ
指定クロージャがキャプチャしてきた参照は必ず'staticになるため必ず返すことができます
2026/07/19(日) 06:15:09.80ID:MjpkG5aN
>>231
あ、ついにやったな
バレないと思ったかもしれないがそれは渡された参照が 'static の場合だけ
こっそり「どんな寿命の参照でも」を消してる
2026/07/19(日) 06:16:27.03ID:wLxs3A5R
なんでこんな偉そうにしてる奴がいたら全力で叩きたい連中のたまり場でここまでツッコミどころ満載のイキり発言をしてしまったのか……
2026/07/19(日) 06:16:35.28ID:GVCMKu1f
>>232
もちろん
どんな寿命の参照でも
『それを関数の引数で受け取ったら』
必ず返せます

元の書き込み
>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
2026/07/19(日) 06:18:50.69ID:3mnun1V8
>>234
反例: thread::spawn()

あと、元の書き込みを印籠にしたいなら
> どんな値でも、それが自分で作ったものでも、関数の引数として受け取ったものでも、他の関数から返ってきたものでも、関数から必ず返せる
もちゃんと書いとけマヌケ
2026/07/19(日) 06:21:17.49ID:GVCMKu1f
>>235
まずspawnの仕様をよく見ようよ
spawnには'staticしか来ない
だからspawnの場合も以下が成立している

>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
■ このスレッドは過去ログ倉庫に格納されています