公式
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 part32
https://mevius.5ch.net/test/read.cgi/tech/1755057787/
Rust part31 https://mevius.5ch.net/test/read.cgi/tech/1751545806/
Rust part30 https://mevius.5ch.net/test/read.cgi/tech/1748392296/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
Rust part33
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
2025/08/15(金) 17:49:30.70ID:N8TIzbWg876デフォルトの名無しさん
2025/11/23(日) 20:20:59.87ID:hAxz+HBT Cargoの管理ファイルがウザイな。
lib.rsまでは良しとしてmod.rsまで必要かえ?
PlatformIOのように全体一発でモジュールとクレート管理できんもんかね?
lib.rsまでは良しとしてmod.rsまで必要かえ?
PlatformIOのように全体一発でモジュールとクレート管理できんもんかね?
877デフォルトの名無しさん
2025/11/23(日) 20:57:42.13ID:6RGNEouq Rustのモジュール設計ってPythonのパクり?
878デフォルトの名無しさん
2025/11/23(日) 23:28:58.23ID:rr5Ei7G8879デフォルトの名無しさん
2025/11/23(日) 23:44:04.11ID:rr5Ei7G8 もっともCloudflareの事例はプログラムやサービスを停止させる必要はなくて古い設定値のままトラフィックを捌き続ければよかった
880デフォルトの名無しさん
2025/11/24(月) 00:16:32.96ID:JEY6AAvW >>858
いや、プログラムが緊急停止した場合の対策が出来ない無能はシステムを運用すべきじゃない、だろ。
いや、プログラムが緊急停止した場合の対策が出来ない無能はシステムを運用すべきじゃない、だろ。
881デフォルトの名無しさん
2025/11/24(月) 08:08:42.17ID:ToUcbaMD >>880
その発言だと開発のポカは運用でカバーできるのが前提になっているけど、panicみたいに緊急停止するような状況はどんなに上手く運用したとしても回避するのは困難かと。
しかもCloudflareの場合は
https://blog.cloudflare.com/ja-jp/18-november-2025-outage/
自動生成した設定ファイルが原因だから、コードに詳しい開発側じゃなければわからない。
これを「運用が無能だから発生した」とか言うんだったら、運用側は「panicは最小限度にしろ」「panicが発生するコードは全て明記して管理しろ」「管理できなければpanicさせるな」と要求するわな。
その発言だと開発のポカは運用でカバーできるのが前提になっているけど、panicみたいに緊急停止するような状況はどんなに上手く運用したとしても回避するのは困難かと。
しかもCloudflareの場合は
https://blog.cloudflare.com/ja-jp/18-november-2025-outage/
自動生成した設定ファイルが原因だから、コードに詳しい開発側じゃなければわからない。
これを「運用が無能だから発生した」とか言うんだったら、運用側は「panicは最小限度にしろ」「panicが発生するコードは全て明記して管理しろ」「管理できなければpanicさせるな」と要求するわな。
882デフォルトの名無しさん
2025/11/24(月) 10:00:06.15ID:JEY6AAvW >>881
あのな、言いたい事は分かるし、プログラマはシステムが止まらないよう最大限の努力しろというのはその通りだが、超新星爆発や太陽フレアやコーヒーが零れるのは止められないからな。それを念頭に運用は速やかにシステムを復旧出来るようにしとけよ。それが出来ずにプログラムやプログラマを非難するだけの運用なら無能というはなし。
あのな、言いたい事は分かるし、プログラマはシステムが止まらないよう最大限の努力しろというのはその通りだが、超新星爆発や太陽フレアやコーヒーが零れるのは止められないからな。それを念頭に運用は速やかにシステムを復旧出来るようにしとけよ。それが出来ずにプログラムやプログラマを非難するだけの運用なら無能というはなし。
883デフォルトの名無しさん
2025/11/24(月) 10:32:10.42ID:NcJaUoGt884デフォルトの名無しさん
2025/11/24(月) 10:45:36.91ID:ToUcbaMD >>882
なんのために制約キツくてコーティング面倒臭いRustを使っているのか、という話だわな。
Rustを採用するマネジメント層からすれば、トラブルの無い安定運用がRustに期待するところであって、Cloudflareみたいなサービス停止トラブルはあってはならない悪夢でしかない。その原因が無能コーダーが不用意に突っ込んだunwrapなんだから、管理側が「SafeRustではpanic禁止にしたい」と考えるのは当然じゃないんかね。
なんのために制約キツくてコーティング面倒臭いRustを使っているのか、という話だわな。
Rustを採用するマネジメント層からすれば、トラブルの無い安定運用がRustに期待するところであって、Cloudflareみたいなサービス停止トラブルはあってはならない悪夢でしかない。その原因が無能コーダーが不用意に突っ込んだunwrapなんだから、管理側が「SafeRustではpanic禁止にしたい」と考えるのは当然じゃないんかね。
885デフォルトの名無しさん
2025/11/24(月) 10:54:15.58ID:6bKOYnAL886デフォルトの名無しさん
2025/11/24(月) 11:23:49.40ID:3cdeWV/q887デフォルトの名無しさん
2025/11/24(月) 12:50:03.58ID:fg7M9od0888デフォルトの名無しさん
2025/11/24(月) 12:51:36.71ID:OH3b+FiZ Rustが保証するのはメモリ安全であって、それ以上の機能を言語自体に期待してはいけないね
889デフォルトの名無しさん
2025/11/24(月) 13:52:56.65ID:wHdQFDSx 3年かけて数多のスレを潰してようやく分かったか?
890デフォルトの名無しさん
2025/11/24(月) 15:25:42.29ID:xtd+oazR 今後Rustは使用必須のスタートラインに過ぎないからな
891デフォルトの名無しさん
2025/11/24(月) 17:08:28.30ID:Ya054j8a Rustの次の言語に期待
892デフォルトの名無しさん
2025/11/24(月) 17:14:22.69ID:eqWikkbY 実際、Rust以降ってこれといった言語出てなくない?
893デフォルトの名無しさん
2025/11/24(月) 17:19:31.65ID:mGEasdrD Rustより安全性の高い言語でないと企業が採用しない
Rustのような書きやすさと両立したプログラミング言語は出現しそうにない
Rustのような書きやすさと両立したプログラミング言語は出現しそうにない
894デフォルトの名無しさん
2025/11/24(月) 17:45:09.92ID:kI+d7siV メモリの安全性だけでなくnull safetyやmatchのexhaustivenessなど堅牢なソフトウェアを作るための機能が言語に備わっている
にもかかわらずそれらバイパスする間違ったunwrapやpanicの使い方を「正しい」と思い込んでる人たちを少なからず作り出しているということと、その誤った使い方を構造的に防止する方法がないということがソフトウェアの安全性に対するRustの問題点
にもかかわらずそれらバイパスする間違ったunwrapやpanicの使い方を「正しい」と思い込んでる人たちを少なからず作り出しているということと、その誤った使い方を構造的に防止する方法がないということがソフトウェアの安全性に対するRustの問題点
895デフォルトの名無しさん
2025/11/24(月) 18:01:28.20ID:p5vlTQW+ unsafeの中以外は⊂(^ω^)⊃ セフセフ!!
896デフォルトの名無しさん
2025/11/24(月) 18:21:57.08ID:eehF78R0 >>894
理解できていないのは君だろ
null safetyは必ずnullチェックがなされることを指す
unwrapは必ずnullチェックをする安全な方法
安全でないのはnullチェックをしないunwrap_unchecked()
理解できていないのは君だろ
null safetyは必ずnullチェックがなされることを指す
unwrapは必ずnullチェックをする安全な方法
安全でないのはnullチェックをしないunwrap_unchecked()
897デフォルトの名無しさん
2025/11/24(月) 18:37:03.11ID:rjCnBMS+898デフォルトの名無しさん
2025/11/24(月) 18:43:35.39ID:t2YHlRQh >>892
Zigがあるじゃん
Zigがあるじゃん
899デフォルトの名無しさん
2025/11/24(月) 18:48:01.50ID:eehF78R0900デフォルトの名無しさん
2025/11/24(月) 18:53:21.46ID:fgR96Ue8 >>898
何年前に出て、現在どれだけ使われてるの?
何年前に出て、現在どれだけ使われてるの?
901デフォルトの名無しさん
2025/11/24(月) 19:30:54.35ID:t2YHlRQh902デフォルトの名無しさん
2025/11/24(月) 19:58:53.90ID:0956DWdq >>901
聞いたのは個別具体な事例ではなく、どれだけ使われているか、つまり普及のいかんについてであるのと、あと出た時期Rustと変わんなくない?
聞いたのは個別具体な事例ではなく、どれだけ使われているか、つまり普及のいかんについてであるのと、あと出た時期Rustと変わんなくない?
903デフォルトの名無しさん
2025/11/24(月) 21:00:06.05ID:/4tPGgp6 Crate.ioには、std::fmt::Debugをインプリしていないクレートが一杯あるんやね。
UartDriverだけかと思いきや、結構ある。
Wrapper作ってのインプリ作業がマンドクセ。
でないと、クレート、モジュールの外部変数Mutex.setもできん。
いろいろ手間のかかる言語だ。
UartDriverだけかと思いきや、結構ある。
Wrapper作ってのインプリ作業がマンドクセ。
でないと、クレート、モジュールの外部変数Mutex.setもできん。
いろいろ手間のかかる言語だ。
904デフォルトの名無しさん
2025/11/24(月) 21:14:00.28ID:P1qKutdV ラップして Debug を実装するだけならマクロでかなり自動化できると思う。
というかそういうクレートはありそう。 知らんけど。
というかそういうクレートはありそう。 知らんけど。
905デフォルトの名無しさん
2025/11/24(月) 22:02:41.96ID:BE69Oim8 >>896
言語に機能は備わっているけど誤った使い方でそれを活用できていない人たちがいるという話に対して「unwrapは必ずnullチェックをする」という言語に備わった機能を紹介しても意味ないでしょ
ちなみにnull safetyは必ずnullチェックがなされることを指すわけではないよ
null safetyを実現するための一手段ではあるけれどね
言語に機能は備わっているけど誤った使い方でそれを活用できていない人たちがいるという話に対して「unwrapは必ずnullチェックをする」という言語に備わった機能を紹介しても意味ないでしょ
ちなみにnull safetyは必ずnullチェックがなされることを指すわけではないよ
null safetyを実現するための一手段ではあるけれどね
906デフォルトの名無しさん
2025/11/24(月) 22:03:30.71ID:Ucl2n3b7907デフォルトの名無しさん
2025/11/24(月) 22:07:33.53ID:qMEdPPRT908デフォルトの名無しさん
2025/11/24(月) 22:25:07.64ID:BE69Oim8 >>907
ケースバイケースなのは当然の話なんだがunwrapの誤った使い方によって大障害につながったCloudflareのケースを念頭に話をしてるわけで
あれが「誤った使い方」と断言できない人がこんなスレだけで複数いることがRustの抱えてる問題
ケースバイケースなのは当然の話なんだがunwrapの誤った使い方によって大障害につながったCloudflareのケースを念頭に話をしてるわけで
あれが「誤った使い方」と断言できない人がこんなスレだけで複数いることがRustの抱えてる問題
909デフォルトの名無しさん
2025/11/24(月) 22:28:17.91ID:qMEdPPRT910デフォルトの名無しさん
2025/11/24(月) 22:31:40.94ID:fg7M9od0 >>906
Rust API Guidelines でもパブリックな型にはDebugトレイトを実装することを推奨してるけど
https://rust-lang.github.io/api-guidelines/debuggability.html
Rust API Guidelines でもパブリックな型にはDebugトレイトを実装することを推奨してるけど
https://rust-lang.github.io/api-guidelines/debuggability.html
911デフォルトの名無しさん
2025/11/24(月) 22:32:27.20ID:vfRWkEzS >>908
その無理矢理な「Rustの抱えている問題」との書き込みからアンチらしき人にみえます
その無理矢理な「Rustの抱えている問題」との書き込みからアンチらしき人にみえます
912デフォルトの名無しさん
2025/11/24(月) 22:41:07.93ID:pZ21ptJQ 「所有権の複製」の人って
その発言の前はそもそもクソコードいっぱいこのスレに書いてた人よな?
あの人よくunwrap書いてたような記憶あるけど記憶違いかな
その発言の前はそもそもクソコードいっぱいこのスレに書いてた人よな?
あの人よくunwrap書いてたような記憶あるけど記憶違いかな
913デフォルトの名無しさん
2025/11/24(月) 23:02:06.99ID:A7gFxydS unwrap使わない人はassertも使わないのかな
条件が破れた時にpanicの発生源になるし
条件が破れた時にpanicの発生源になるし
914デフォルトの名無しさん
2025/11/25(火) 00:13:09.71ID:8A3kV+Bq 除算は常にchecked_div使ってそう
915デフォルトの名無しさん
2025/11/25(火) 00:17:03.45ID:x+ek8sa9 物事を点でしかとらえられない知的障害者が大勢いるのがよくわかってかなしい
早くAIに置換したい
早くAIに置換したい
916デフォルトの名無しさん
2025/11/25(火) 00:21:51.64ID:GjnKMvo7 0か100か思考の例
917デフォルトの名無しさん
2025/11/25(火) 01:08:59.76ID:0646GGZx >>909
Cloudflareのunwrapの使い方が誤った使い方でないと思ってるならそう思う根拠を述べて反論できないの?
Cloudflareのunwrapの使い方が誤った使い方でないと思ってるならそう思う根拠を述べて反論できないの?
918デフォルトの名無しさん
2025/11/25(火) 03:59:13.06ID:+GvTbsc2 >>917
あちこちでの議論くらい読め
Resultを返す関数の中で意図的にResultをunwrapしていることから
そこでエラーは起きないと確信していて起きたら停止すべき事態とみなしている
現実にもありえない重複行が発生してサイズオーバーという異常事態になっていた
あとは運用側の問題でありpanicによりどこで何が起きたか確実に判明して直ぐに対応できる話だがここでは対象外
あちこちでの議論くらい読め
Resultを返す関数の中で意図的にResultをunwrapしていることから
そこでエラーは起きないと確信していて起きたら停止すべき事態とみなしている
現実にもありえない重複行が発生してサイズオーバーという異常事態になっていた
あとは運用側の問題でありpanicによりどこで何が起きたか確実に判明して直ぐに対応できる話だがここでは対象外
919デフォルトの名無しさん
2025/11/25(火) 07:01:05.47ID:DqKQ99IA >>918
そのあたりはコーダーの都合であって、運用を危険にさらす理由にならない。
Cloudflareの場合で言うなら、
https://blog.cloudflare.com/ja-jp/18-november-2025-outage/
ボット管理モジュールのフィーチャー設定ファイルは長さに上限が無いにもかかわらず固定長のメモリに保存する仕様にしているのだから、固定長を超えるフィーチャー設定ファイルが来るのは当然ありえるケースとしてカバーする必要がある。それをコーダーの都合で雑にpanicさせて、なおかつ「panicのあとは運用側の問題」と放り投げるなら>881>884という話だわな。
そのあたりはコーダーの都合であって、運用を危険にさらす理由にならない。
Cloudflareの場合で言うなら、
https://blog.cloudflare.com/ja-jp/18-november-2025-outage/
ボット管理モジュールのフィーチャー設定ファイルは長さに上限が無いにもかかわらず固定長のメモリに保存する仕様にしているのだから、固定長を超えるフィーチャー設定ファイルが来るのは当然ありえるケースとしてカバーする必要がある。それをコーダーの都合で雑にpanicさせて、なおかつ「panicのあとは運用側の問題」と放り投げるなら>881>884という話だわな。
920デフォルトの名無しさん
2025/11/25(火) 07:48:13.19ID:FpWlKcVO 運用上マズい結果を招きかねないコードがそのまんまテストやレビューを通過していることから、これは組織体制の問題でもある
どのようなテスト結果をもってどのように承認されたのか、今回の事象に至る前提条件はその時に把握されていたのか、等が気になる
どのようなテスト結果をもってどのように承認されたのか、今回の事象に至る前提条件はその時に把握されていたのか、等が気になる
921デフォルトの名無しさん
2025/11/25(火) 07:52:14.10ID:+GvTbsc2 >>919
理解できない人なのかな?
そんな憶測の話はどうでもいい
きりがない
重要なことは何を意図して今回のコードを書いているかどうか
今回はResultを返す関数の中で意図的にResultをunwrapしていることから
そこでエラーは起きないと確信していて起きたら停止すべき事態とみなしている
そして異常事態が実際に起きてここで食い止めることができている
もちろんこれらの事象が起きて事後知識を得た後には別の判断をする可能性がある
その一つがボット判断の無効化など異常事態でも動かし続けることを優先するだろう
これらの事後知識を得た後の話をしても意味がない
理解できない人なのかな?
そんな憶測の話はどうでもいい
きりがない
重要なことは何を意図して今回のコードを書いているかどうか
今回はResultを返す関数の中で意図的にResultをunwrapしていることから
そこでエラーは起きないと確信していて起きたら停止すべき事態とみなしている
そして異常事態が実際に起きてここで食い止めることができている
もちろんこれらの事象が起きて事後知識を得た後には別の判断をする可能性がある
その一つがボット判断の無効化など異常事態でも動かし続けることを優先するだろう
これらの事後知識を得た後の話をしても意味がない
922デフォルトの名無しさん
2025/11/25(火) 08:15:03.85ID:avTUsTzQ >>921
コーダー視点からすればそうなのね。
それならなおさらのこと、マネジメント視点や運用視点からすればpanicは厳重に管理しなければならない対象ということになり、>881という結論になるわな。
さらに言えば>920の指摘の通りで、雑に実装された緊急停止コードがレビューでそのまま本番環境に投入されたのは組織体制の問題があるかもしれん。実際にはRustのバッドノウハウの普及遅れのせいだと思うけど。
コーダー視点からすればそうなのね。
それならなおさらのこと、マネジメント視点や運用視点からすればpanicは厳重に管理しなければならない対象ということになり、>881という結論になるわな。
さらに言えば>920の指摘の通りで、雑に実装された緊急停止コードがレビューでそのまま本番環境に投入されたのは組織体制の問題があるかもしれん。実際にはRustのバッドノウハウの普及遅れのせいだと思うけど。
923デフォルトの名無しさん
2025/11/25(火) 10:56:07.08ID:IwWO65N4924デフォルトの名無しさん
2025/11/25(火) 11:05:24.61ID:NxjncStx 複おじの憶測が当たってても誤ったunwrapの使い方であることに変わりはないよね
925デフォルトの名無しさん
2025/11/25(火) 11:49:12.51ID:twyqgfyl クラウドフレアって良く落ちるよね
926デフォルトの名無しさん
2025/11/25(火) 13:01:07.06ID:s4FH6eXw >>921
コードは(もっと言えば仕様も)意図を100%反映するものではない
コードにunwrap()があるからといってそこから背景の意図を一意に読み取れるとする前提は、ソフトウェア工学の現実にまったく即していない
コードは(もっと言えば仕様も)意図を100%反映するものではない
コードにunwrap()があるからといってそこから背景の意図を一意に読み取れるとする前提は、ソフトウェア工学の現実にまったく即していない
927デフォルトの名無しさん
2025/11/25(火) 13:11:04.76ID:9wqtt8Qj 設定ファイルはデフォルトのものは用意出来なかったのだろうか
デフォルトの設定を使ったら動作変わるだろうけどそれよりはpanicのほうがマシということかな
デフォルトの設定を使ったら動作変わるだろうけどそれよりはpanicのほうがマシということかな
928デフォルトの名無しさん
2025/11/25(火) 14:14:13.80ID:mrMsaISH panicさせれば確実に問題を把握できるからベストだけど
どこでpanicしたかわかっているのに対応に時間がかかった運用体制がダメだよな
どこでpanicしたかわかっているのに対応に時間がかかった運用体制がダメだよな
929デフォルトの名無しさん
2025/11/25(火) 14:28:01.35ID:22TkMTB3 リリースビルドでも行番号出るんだっけ?
930デフォルトの名無しさん
2025/11/25(火) 14:36:29.79ID:oKjFi/bF fmt::Debug実装されてないとき
Compile errorで落とすのをデフォに出来ないの
Compile errorで落とすのをデフォに出来ないの
931デフォルトの名無しさん
2025/11/25(火) 14:43:06.35ID:F0vSFTML >>877
pythonのモジュール設計はtcl/tkのパクリ
pythonのモジュール設計はtcl/tkのパクリ
932デフォルトの名無しさん
2025/11/25(火) 15:49:19.46ID:I2i5SPtI >>910
だね。
例えば、UartDriverのインスタンスを関数外にグローバル変数(static)として設け、各関数でシェアする場合、
OnceLock<Mutex>などで排他する必要がある。
これをnew()内でmutex setしようとするとそのset関数にはunwrapも.exceptも使えない。
そこで、sft::fmt::DEBUGインプリメント推奨となる。
だね。
例えば、UartDriverのインスタンスを関数外にグローバル変数(static)として設け、各関数でシェアする場合、
OnceLock<Mutex>などで排他する必要がある。
これをnew()内でmutex setしようとするとそのset関数にはunwrapも.exceptも使えない。
そこで、sft::fmt::DEBUGインプリメント推奨となる。
933デフォルトの名無しさん
2025/11/25(火) 16:57:37.23ID:I2i5SPtI934デフォルトの名無しさん
2025/11/25(火) 18:06:26.30ID:gKa7Wtm4 refcellとかの内部可変性はズルいような感じする
935デフォルトの名無しさん
2025/11/25(火) 18:07:51.70ID:Uzx8myAA unwrap禁止おじさんw
936デフォルトの名無しさん
2025/11/25(火) 18:29:54.26ID:I2i5SPtI まぁ クレートのラッパーにstd::fmt:DEBUG入れ込むのは、VScode AIコパイロットで一度パターンを覚えてくれれば、楽になるが、あちきのようなvim使いにはテンプレートでやるしかない。
意外と手間がかかるのでマンドクサイ。
意外と手間がかかるのでマンドクサイ。
937デフォルトの名無しさん
2025/11/25(火) 18:43:51.50ID:tWNvtr7E938デフォルトの名無しさん
2025/11/25(火) 18:50:48.51ID:tWNvtr7E939デフォルトの名無しさん
2025/11/25(火) 19:15:28.03ID:twyqgfyl まあRustだから安全ですよ
そんなに心配していません
そんなに心配していません
940デフォルトの名無しさん
2025/11/26(水) 01:42:28.68ID:fYRqTg9o panic panic panic みんなが慌ててる
Rustは凄いぞ 天才的だぞ 将来楽しみだ
Rustは凄いぞ 天才的だぞ 将来楽しみだ
941デフォルトの名無しさん
2025/11/26(水) 02:55:05.14ID:I5iq7Xze 認証せえ~!!
レスを投稿する
レス数が900を超えています。1000を超えると表示できなくなるよ。
