公式
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
1デフォルトの名無しさん
2025/08/15(金) 17:49:30.70ID:N8TIzbWg777デフォルトの名無しさん
2025/11/21(金) 06:09:46.10ID:pxhgH2KX 日本語翻訳があるんだから、少しは元記事に目を通せや。
https://blog.cloudflare.com/ja-jp/18-november-2025-outage/
cloudflareはエラーハンドリングに失敗して原因追求できずに大規模DDoS攻撃と誤認したんだろ。
このケースでpanicが正しかったとはとても思えない。
https://blog.cloudflare.com/ja-jp/18-november-2025-outage/
cloudflareはエラーハンドリングに失敗して原因追求できずに大規模DDoS攻撃と誤認したんだろ。
このケースでpanicが正しかったとはとても思えない。
778デフォルトの名無しさん
2025/11/21(金) 07:16:25.89ID:z62qyAHj 現場コーダー(ここでエラーハンドリングしたらそのぶんテストしなきゃいけないな。
でも今日は早めに帰って家でゲームしたいんだよね。うーん…怖いけどunwrapするか。
なーに、下っ端は仕様書の前提をただ信じればいいだけさ。これでよし、帰ろっと。)
53日後…ウェブが死んだ
でも今日は早めに帰って家でゲームしたいんだよね。うーん…怖いけどunwrapするか。
なーに、下っ端は仕様書の前提をただ信じればいいだけさ。これでよし、帰ろっと。)
53日後…ウェブが死んだ
779デフォルトの名無しさん
2025/11/21(金) 07:27:20.23ID:YVVnWYXM >>773
「設計通りあれば辿り着きえない」なら assert や unreachable じゃないの?
expected でも良い
これは「どうエラーをハンドルするか」という問題ではなく「ソースコードの読み手に対し設計者の意図をどのように表明するか」という話な気もする
「設計通りあれば辿り着きえない」なら assert や unreachable じゃないの?
expected でも良い
これは「どうエラーをハンドルするか」という問題ではなく「ソースコードの読み手に対し設計者の意図をどのように表明するか」という話な気もする
780デフォルトの名無しさん
2025/11/21(金) 07:46:53.00ID:5wtRNmya781デフォルトの名無しさん
2025/11/21(金) 08:17:21.30ID:m9VdLfOa >>777
後からは何とでも言えるが、開発時点でこういった失敗を想定して対処できたのか?って話
Googleも最近似たようなことやらかしてるんだからな
絶対に必要不可欠というわけでもなさそうな処理だが、かといって内部のパラメータさえ適切に設定されていれば無難に動くものなんだろうから、
こうした状況に対処するための設計上の強力なポリシー(おそらく今回のトラブルをきっかけに策定される)がない限り、
それが安易にクリティカルパスに組み込まれてしまうことは仕方ないように思える
逆にデフォルトのポリシーとしてフェイルソフトを優先するようなことをすれば、>>764の通りOptionalだらけのゆるふわ設計につながる
後からは何とでも言えるが、開発時点でこういった失敗を想定して対処できたのか?って話
Googleも最近似たようなことやらかしてるんだからな
絶対に必要不可欠というわけでもなさそうな処理だが、かといって内部のパラメータさえ適切に設定されていれば無難に動くものなんだろうから、
こうした状況に対処するための設計上の強力なポリシー(おそらく今回のトラブルをきっかけに策定される)がない限り、
それが安易にクリティカルパスに組み込まれてしまうことは仕方ないように思える
逆にデフォルトのポリシーとしてフェイルソフトを優先するようなことをすれば、>>764の通りOptionalだらけのゆるふわ設計につながる
782デフォルトの名無しさん
2025/11/21(金) 09:00:31.31ID:P6+MwwhU783デフォルトの名無しさん
2025/11/21(金) 09:04:46.72ID:XNdnsjIs784デフォルトの名無しさん
2025/11/21(金) 09:27:12.92ID:7pvsHy8Q785デフォルトの名無しさん
2025/11/21(金) 09:34:42.48ID:TUdbr/Fo786デフォルトの名無しさん
2025/11/21(金) 09:52:08.85ID:aGwiM0lE >>772
>結局プログラムを終了させるなら深いところでpanicさせることでバックトレース情報を最大化しましょう
Resultを上位に伝播させるのも面倒だし伝播させた後の対応も面倒だから雑にpanicで終了させましょうという話だな
こう考えるやつが少なからずいるようならRustを使う開発者の能力の問題だけでなくRust自身の問題ということになる
>結局プログラムを終了させるなら深いところでpanicさせることでバックトレース情報を最大化しましょう
Resultを上位に伝播させるのも面倒だし伝播させた後の対応も面倒だから雑にpanicで終了させましょうという話だな
こう考えるやつが少なからずいるようならRustを使う開発者の能力の問題だけでなくRust自身の問題ということになる
787デフォルトの名無しさん
2025/11/21(金) 10:02:37.01ID:eVGGGIM3 想定可能なエラーでも続行不能ならpanicさせてバックトレース見ましょうみたいな運用がCloudflareの規模で成り立つわけないのにね
性能要件的にバックトレース無効にしてる可能性もある
性能要件的にバックトレース無効にしてる可能性もある
788デフォルトの名無しさん
2025/11/21(金) 10:16:37.50ID:z62qyAHj とにかく全部ハンドリングしようぜ
あらゆるケースを想定するべきだ
あらゆるケースを想定するべきだ
789デフォルトの名無しさん
2025/11/21(金) 10:30:47.14ID:aLBJCcru 設定に異常値が紛れ込んでもpanicで止めたくないならunwrapをunwrap_or_defaultあたりに替えとけばいいよ
とりあえず動く
とりあえず動く
790デフォルトの名無しさん
2025/11/21(金) 11:56:46.17ID:x3e9+uyj >>779
横からだがこの議題でpanicと呼ばれていることはpanic!を引き起こすassert!やunreachable!やexpectなどの総称でしょう
横からだがこの議題でpanicと呼ばれていることはpanic!を引き起こすassert!やunreachable!やexpectなどの総称でしょう
791デフォルトの名無しさん
2025/11/21(金) 11:59:34.90ID:x3e9+uyj792デフォルトの名無しさん
2025/11/21(金) 12:10:50.33ID:Bq7cxlpS 今回のCloudflareの件で言うとあそこでpanicさせなかったら
事前に確保したより大きなメモリ確保しようとしてプロセスがランダムにkillされたり
より意味不明な事態になったかもね
事前に確保したより大きなメモリ確保しようとしてプロセスがランダムにkillされたり
より意味不明な事態になったかもね
793デフォルトの名無しさん
2025/11/21(金) 12:38:52.46ID:kvfum7jC panic肯定派は色々と分かっていないなぁ。
「続行不能ならpanicさせて緊急停止させるべき」というなら、緊急停止させた後のことも考えて状況を制御しろ。panicさせた後のことは分からん、と言うのならpanicさせるな。
それすら思いつかない無能コーダーが大半なんだから、無能コーダー向けのsafe rustはpanic禁止すべき。
「続行不能ならpanicさせて緊急停止させるべき」というなら、緊急停止させた後のことも考えて状況を制御しろ。panicさせた後のことは分からん、と言うのならpanicさせるな。
それすら思いつかない無能コーダーが大半なんだから、無能コーダー向けのsafe rustはpanic禁止すべき。
794デフォルトの名無しさん
2025/11/21(金) 12:52:05.82ID:bQYXRKni >>792
>Enabling more global kill switches for features
障害発生時の構えとして特定機能(今回でいうならボット管理)を無効化する考えを公式が示しているわけで
すなわちこれが本来あるべき姿、「unwrap任せで勝手にpanicする」のはネットワークインフラを提供する側としてありえない設計であると言っているのもしかりでは
>An outage like today is unacceptable. We've architected our systems to be highly resilient to failure to ensure traffic will always continue to flow. When we've had outages in the past it's always led to us building new, more resilient systems.
>Enabling more global kill switches for features
障害発生時の構えとして特定機能(今回でいうならボット管理)を無効化する考えを公式が示しているわけで
すなわちこれが本来あるべき姿、「unwrap任せで勝手にpanicする」のはネットワークインフラを提供する側としてありえない設計であると言っているのもしかりでは
>An outage like today is unacceptable. We've architected our systems to be highly resilient to failure to ensure traffic will always continue to flow. When we've had outages in the past it's always led to us building new, more resilient systems.
795デフォルトの名無しさん
2025/11/21(金) 13:18:58.19ID:x3e9+uyj796デフォルトの名無しさん
2025/11/21(金) 13:22:16.60ID:aLBJCcru >>791
上位でcatch_unwindはしてると思うけど延々と同じ異常値使ってpanic繰り返してた感じでしょ
自分もpanicで抜ける方が正しいと思うけどこれだけpanicに文句言う人が多いなら異常値無視して動かした方がよくね?
設定無視しても多少セキュリティに穴が開く程度だろうし
上位でcatch_unwindはしてると思うけど延々と同じ異常値使ってpanic繰り返してた感じでしょ
自分もpanicで抜ける方が正しいと思うけどこれだけpanicに文句言う人が多いなら異常値無視して動かした方がよくね?
設定無視しても多少セキュリティに穴が開く程度だろうし
797デフォルトの名無しさん
2025/11/21(金) 13:35:17.28ID:bQYXRKni798デフォルトの名無しさん
2025/11/21(金) 13:54:38.91ID:x3e9+uyj799デフォルトの名無しさん
2025/11/21(金) 14:11:04.02ID:bQYXRKni おーらい
800デフォルトの名無しさん
2025/11/21(金) 14:57:18.03ID:fa/ssAob unwrapがあったらリリースビルドが失敗するようにしてほしいよね
801デフォルトの名無しさん
2025/11/21(金) 15:31:33.26ID:xINfobxx rustのdrop traitってメモリー解放前の前処理を記述する場所で
dorpはメモリーを開放するというのは違うよね
dorpはメモリーを開放するというのは違うよね
802デフォルトの名無しさん
2025/11/21(金) 15:53:54.77ID:G3R9bFuG drop は明示的に呼出し (いわゆる早期 drop) てもそれ自体がメモリを解放するとは限らないが、言語機能と融合している特別なトレイトなのでメモリの解放のタイミングに影響を与えることはありうる。
803デフォルトの名無しさん
2025/11/21(金) 23:25:47.85ID:auLVIhoC redditからの借り物
https://i.imgur.com/oEZoQJd.png
https://i.imgur.com/oEZoQJd.png
804デフォルトの名無しさん
2025/11/21(金) 23:56:05.84ID:kB1g97LF そんなもんだ
過去を引きずる案件以外でC++を使う人は消えていく
過去を引きずる案件以外でC++を使う人は消えていく
805デフォルトの名無しさん
2025/11/22(土) 00:16:12.45ID:Z+ns1hWs こんなもん完成に用途によるだろ
実際にそれ系本場の組み込みとかでの普及率こそ指標とするべきではないの?
実際にそれ系本場の組み込みとかでの普及率こそ指標とするべきではないの?
806デフォルトの名無しさん
2025/11/22(土) 00:17:49.35ID:Z+ns1hWs ❌完成に
⭕完全に
⭕完全に
807デフォルトの名無しさん
2025/11/22(土) 00:18:35.18ID:VyR9oLxq updateもカウント
https://www.reddit.com/r/rust/comments/1p2tfi1/media_new_releases_on_pypi_rust_vs_cc/
> But… I’m interested in those subsequent updates.
https://www.reddit.com/r/rust/comments/1p2tfi1/media_new_releases_on_pypi_rust_vs_cc/
> But… I’m interested in those subsequent updates.
808デフォルトの名無しさん
2025/11/22(土) 01:07:20.55ID:iexvlmA9 >>789
>設定に異常値が紛れ込んでもpanicで止めたくない
入力値と設定そのものを混同してるよね?
設定に反映させるために読み込んだ入力値が必須条件を満たしてないだけであってアプリの振る舞いを左右する設定自体に異常値が紛れ込んでいるわけではないよ
>設定に異常値が紛れ込んでもpanicで止めたくない
入力値と設定そのものを混同してるよね?
設定に反映させるために読み込んだ入力値が必須条件を満たしてないだけであってアプリの振る舞いを左右する設定自体に異常値が紛れ込んでいるわけではないよ
809デフォルトの名無しさん
2025/11/22(土) 05:50:44.36ID:6IzbV+e7 クラウドフレアでのやらかしでrustも失墜だね
810デフォルトの名無しさん
2025/11/22(土) 05:58:51.95ID:CapHAAXn 遅くて安全じゃないって最悪じゃん
811デフォルトの名無しさん
2025/11/22(土) 07:02:46.20ID:Hhj8j98Q812デフォルトの名無しさん
2025/11/22(土) 07:04:22.51ID:IiIf7f1d813デフォルトの名無しさん
2025/11/22(土) 08:36:23.79ID:TcBJjde/ >>811
Mutex使用禁止ということか
Mutex使用禁止ということか
814デフォルトの名無しさん
2025/11/22(土) 08:57:51.52ID:m6/1q0Jm815デフォルトの名無しさん
2025/11/22(土) 10:11:24.12ID:YjCm7wO7816デフォルトの名無しさん
2025/11/22(土) 11:09:17.53ID:2DsIii2D Rustのunwrap()というのはそもそも前提が壊れたらpanicするイディオムであるので、
もしpanic厳禁派を標榜するならケースバイケースで使っていいものではなく絶対にソースコード上に登場させてはならない
もしpanic厳禁派を標榜するならケースバイケースで使っていいものではなく絶対にソースコード上に登場させてはならない
817デフォルトの名無しさん
2025/11/22(土) 12:33:52.35ID:TG+W7F+c unwrapの使い方なんてrustユーザー側の設計思想やリスク管理に依るものであって、結局は開発組織の質の問題よ
818デフォルトの名無しさん
2025/11/22(土) 12:59:01.17ID:W9tILc9J unwrapの間違った使い方をしたり間違った使い方を正しいと思い込んでる人がこれだけいるんだから開発組織の質の問題として片付けられないよ
Rustの構造的な問題と言っていい
Rustの構造的な問題と言っていい
819デフォルトの名無しさん
2025/11/22(土) 13:01:14.64ID:GfzAj2LS820デフォルトの名無しさん
2025/11/22(土) 13:03:18.34ID:GfzAj2LS821デフォルトの名無しさん
2025/11/22(土) 13:34:45.55ID:m6/1q0Jm >>819
>両立ができる
「言語の持つ安全性を盲信することは容易に問題となりうること」を理解した上でそれらをどこまで両立させるかの見極めこそが、まさに設計の要では
両者がトレードオフであることを意識してこそ妥協点が見えるわけであり
でなくばいずれは一方が他方の隘路になるのかと
際限のない両立などに再現性はあるまいて
>両立ができる
「言語の持つ安全性を盲信することは容易に問題となりうること」を理解した上でそれらをどこまで両立させるかの見極めこそが、まさに設計の要では
両者がトレードオフであることを意識してこそ妥協点が見えるわけであり
でなくばいずれは一方が他方の隘路になるのかと
際限のない両立などに再現性はあるまいて
822デフォルトの名無しさん
2025/11/22(土) 14:08:27.01ID:HvD57uvC unwrapとかシンプルすぎて誤用の余地ないだろ
823デフォルトの名無しさん
2025/11/22(土) 14:16:46.80ID:iWDV6POw unwrapは未定義動作を生じないという意味においては安全
その結果として自動運転車が人混みに突っ込んだり原子炉がメルトダウンしたりしないことを保証するものではない
その結果として自動運転車が人混みに突っ込んだり原子炉がメルトダウンしたりしないことを保証するものではない
824デフォルトの名無しさん
2025/11/22(土) 14:55:39.41ID:W1QChhvL 分かってない人が多いけど、unwrap_or_default で安全サイドなデフォルト値で動かせば絶対に問題なんて起きないんだが
そのための設計だし初期値で動かないとしたらそもそも設計ミス
単にunwrap使ってそのままというのはダメ。世の中急に止めたら復旧大変なシステムとかもあるんでね
そのための設計だし初期値で動かないとしたらそもそも設計ミス
単にunwrap使ってそのままというのはダメ。世の中急に止めたら復旧大変なシステムとかもあるんでね
825デフォルトの名無しさん
2025/11/22(土) 15:08:23.48ID:H7KzHlst ResultやOptionを返す関数を使用する前にそれがエラーやNoneになるようなケースがチェック済みで、改めて不要なエラー処理を書くのが面倒な時くらいかな、 unwrap を使うのは
826デフォルトの名無しさん
2025/11/22(土) 15:29:04.79ID:udVmyb6K >>824
Mutexでunwrap_or_defaultを使う状況は俺にはちょっと思いつかないな
Mutexでunwrap_or_defaultを使う状況は俺にはちょっと思いつかないな
827デフォルトの名無しさん
2025/11/22(土) 16:34:26.43ID:MIiCzofv >>822
これ見て久しぶりに思い出した
設計と実装の食い違いがあったら「この実装なら設計意図はこうであったはずだ、よって実装は正しい」とか言い出すような奴だった
そりゃあ誤用だなんて認められるわけないし話が通じるはずもないわな
これ見て久しぶりに思い出した
設計と実装の食い違いがあったら「この実装なら設計意図はこうであったはずだ、よって実装は正しい」とか言い出すような奴だった
そりゃあ誤用だなんて認められるわけないし話が通じるはずもないわな
828デフォルトの名無しさん
2025/11/22(土) 16:52:31.93ID:j8/gV38c 安全性を考えれば#[no_panic]的なものがあったほうがいいのは間違いない
だがRustで実現するのはもう不可能だろうから次の言語に期待する
だがRustで実現するのはもう不可能だろうから次の言語に期待する
829デフォルトの名無しさん
2025/11/22(土) 18:45:43.86ID:xjdWzo5J パニックにならずに落ち着いて死ぬような言語がほしいよな
830デフォルトの名無しさん
2025/11/22(土) 19:04:52.97ID:JQXO3OU6 unwrapを禁止するようなコーディング規約ないの?
831デフォルトの名無しさん
2025/11/22(土) 19:42:01.39ID:4rTcW/kk unwrap()は必ずチェックをしてくれるsafeな関数
unwrap_unchecked()がチェックをしないunsafeな関数
後者はチェックが不要であることを人間が保証する形で用いる
unwrap_unchecked()がチェックをしないunsafeな関数
後者はチェックが不要であることを人間が保証する形で用いる
832デフォルトの名無しさん
2025/11/22(土) 20:40:38.59ID:HvD57uvC unwrap禁止の次はassertとかunreachableも禁止とか言い出しそうだな
let value = match opt_value {
Some(value) => value,
None => unreachable!(),
};
let value = match opt_value {
Some(value) => value,
None => unreachable!(),
};
833デフォルトの名無しさん
2025/11/22(土) 21:12:35.60ID:vyXuY/G9 不定値や未定値や異常値のままプログラムが進まないように
プログラムを安全に停止させるために確実にチェックしてくれるunwrap()がある
これを危険扱いする人がいるとは呆れる
プログラムを安全に停止させるために確実にチェックしてくれるunwrap()がある
これを危険扱いする人がいるとは呆れる
834デフォルトの名無しさん
2025/11/22(土) 22:13:14.17ID:uzDjtnGz 相手にされない三連休に三連投 by 複おじ
835デフォルトの名無しさん
2025/11/22(土) 23:23:19.76ID:IVuDBUhf836デフォルトの名無しさん
2025/11/23(日) 03:30:04.39ID:Ff/3hvXU837デフォルトの名無しさん
2025/11/23(日) 04:50:26.53ID:BHgpzqsU Rustとしてvalidであるかどうか以外興味がないので知りません
838デフォルトの名無しさん
2025/11/23(日) 05:34:23.83ID:PnhKXlJE > Rustに関してどう思ってますか?
> 正直C++から逃げた人たちが使ってる言語ってイメージですね
> 正直C++から逃げた人たちが使ってる言語ってイメージですね
839デフォルトの名無しさん
2025/11/23(日) 07:29:25.08ID:GChC/JkO ?でエラーを上に投げて最上部でunwrapしたときにパニックして途中のスタックトレース取れないんだけどどうしたらええの?
840デフォルトの名無しさん
2025/11/23(日) 09:48:44.88ID:YVm57Y35 unwrap は実質的に assert だよ。
ロジック的に失敗するはずがないのに失敗したならその場でパニックさせるべき。
そしてプログラムを修正すべき。
巨大なシステムを突然死させるわけにいかないような場合にどうしても継続するなら最後までなんとかハンドリングしろ。
中途半端に上まで上げてから unwrap とかクソみたいなことをしたらもうどうしようもない。
ロジック的に失敗するはずがないのに失敗したならその場でパニックさせるべき。
そしてプログラムを修正すべき。
巨大なシステムを突然死させるわけにいかないような場合にどうしても継続するなら最後までなんとかハンドリングしろ。
中途半端に上まで上げてから unwrap とかクソみたいなことをしたらもうどうしようもない。
841デフォルトの名無しさん
2025/11/23(日) 10:01:30.46ID:tHBK63qU いやいやいや
ヤベェやつしかいねーな
ヤベェやつしかいねーな
842デフォルトの名無しさん
2025/11/23(日) 10:07:23.20ID:FUNf3ZwY 外部リソースをオープンしていたら、終了時にできる限りクローズさせるべきで、
エラーを上に上げるというのはクローズ処理までエラーを届かせるということ
panicさせる前にクローズ処理を呼び出すでもいいけど、大抵はクローズ処理を行うポイントは決まっていて、内部ロジックのあちこちで呼び出していいなんてことにはなっていないから、そのポイントまでエラーを届けることが必要になる
外部リソースへのアクセスがないロジックだけのプログラムなら、別にいきなりpanicで落としても問題なくて
あとはデバッグのしやすさのために、どうエラーメッセージを出すかだけの話になる
エラーを上に上げるというのはクローズ処理までエラーを届かせるということ
panicさせる前にクローズ処理を呼び出すでもいいけど、大抵はクローズ処理を行うポイントは決まっていて、内部ロジックのあちこちで呼び出していいなんてことにはなっていないから、そのポイントまでエラーを届けることが必要になる
外部リソースへのアクセスがないロジックだけのプログラムなら、別にいきなりpanicで落としても問題なくて
あとはデバッグのしやすさのために、どうエラーメッセージを出すかだけの話になる
843デフォルトの名無しさん
2025/11/23(日) 10:21:09.71ID:n/KY4xZ8 とんでもないプログラマーしかいないなこのスレ
システムは何があっても止めちゃダメなんだよ、不具合があるのは多くの場合は外部とのインターフェースなんだが、いちいち外部からのリクエストの不整合で止めたりしたら客先から鬼電来るの知らんのか?
とりあえず、デフォルト値でもいいから動き続けて様子を見てもらいつつ、その間に詳細な調査をするっていう帳尻合わせや時間稼ぎがないとフィールドのエンジニアからガンガンに怒られるよ
エラーの伝播はそりゃやりゃできればいいが、ログに痕跡残すだけでいいじゃろ。工夫しろ、規模が大きくなればなるほど確率的に何か障害は起きやすくなるけど全部バグを直さなくてもそれなりに動くシステムが健全なシステムだぞ
システムは何があっても止めちゃダメなんだよ、不具合があるのは多くの場合は外部とのインターフェースなんだが、いちいち外部からのリクエストの不整合で止めたりしたら客先から鬼電来るの知らんのか?
とりあえず、デフォルト値でもいいから動き続けて様子を見てもらいつつ、その間に詳細な調査をするっていう帳尻合わせや時間稼ぎがないとフィールドのエンジニアからガンガンに怒られるよ
エラーの伝播はそりゃやりゃできればいいが、ログに痕跡残すだけでいいじゃろ。工夫しろ、規模が大きくなればなるほど確率的に何か障害は起きやすくなるけど全部バグを直さなくてもそれなりに動くシステムが健全なシステムだぞ
844デフォルトの名無しさん
2025/11/23(日) 10:24:31.62ID:W+o2V/Ez 意図を明示するなら unwrap は是
意図を隠蔽するなら unwrap は非
意図を隠蔽するなら unwrap は非
845デフォルトの名無しさん
2025/11/23(日) 10:33:12.45ID:FUNf3ZwY >>843
障害の内容とシステム構成によるよ
障害の内容とシステム構成によるよ
846デフォルトの名無しさん
2025/11/23(日) 11:01:41.72ID:lSbx7jjN >>842
panicでもデストラクタは呼ばれるから心配すんな
機構は例外と同じだ
https://doc.rust-lang.org/nomicon/unwinding.html
Unwinding
Rust has a tiered error-handling scheme:
If something might reasonably be absent, Option is used.
If something goes wrong and can reasonably be handled, Result is used.
If something goes wrong and cannot reasonably be handled, the thread panics.
If something catastrophic happens, the program aborts.
Option and Result are overwhelmingly preferred in most situations, especially since they can be promoted into a panic or abort at the API user's discretion. Panics cause the thread to halt normal execution and unwind its stack, calling destructors as if every function instantly returned.
panicでもデストラクタは呼ばれるから心配すんな
機構は例外と同じだ
https://doc.rust-lang.org/nomicon/unwinding.html
Unwinding
Rust has a tiered error-handling scheme:
If something might reasonably be absent, Option is used.
If something goes wrong and can reasonably be handled, Result is used.
If something goes wrong and cannot reasonably be handled, the thread panics.
If something catastrophic happens, the program aborts.
Option and Result are overwhelmingly preferred in most situations, especially since they can be promoted into a panic or abort at the API user's discretion. Panics cause the thread to halt normal execution and unwind its stack, calling destructors as if every function instantly returned.
847デフォルトの名無しさん
2025/11/23(日) 11:13:39.06ID:FdXSQ6Mu Cloudflareとかだとabortにしてると思うんだよな
848デフォルトの名無しさん
2025/11/23(日) 11:21:43.98ID:FdXSQ6Mu >>842
>外部リソースへのアクセスがないロジックだけのプログラムなら、別にいきなりpanicで落としても問題なくて
>あとはデバッグのしやすさのために、どうエラーメッセージを出すかだけの話になる
自分しか使わない趣味のプログラムならそれでいいけど
それ以外のプログラムでそんな雑なpanicしたらダメだよ
>外部リソースへのアクセスがないロジックだけのプログラムなら、別にいきなりpanicで落としても問題なくて
>あとはデバッグのしやすさのために、どうエラーメッセージを出すかだけの話になる
自分しか使わない趣味のプログラムならそれでいいけど
それ以外のプログラムでそんな雑なpanicしたらダメだよ
849デフォルトの名無しさん
2025/11/23(日) 11:36:16.03ID:Up/nW61P850デフォルトの名無しさん
2025/11/23(日) 11:38:31.64ID:FUNf3ZwY >>848
そうですか、ではなぜダメなのかをご教授ください
そうですか、ではなぜダメなのかをご教授ください
851デフォルトの名無しさん
2025/11/23(日) 12:17:14.82ID:BHgpzqsU 雑魚のくせにテキトーなこと書いて複おじを調子づかせないでよ〜
852デフォルトの名無しさん
2025/11/23(日) 12:36:29.44ID:FdXSQ6Mu853デフォルトの名無しさん
2025/11/23(日) 12:46:55.64ID:S9L/cvUF 対象コードのレビュー履歴を見てみたい
「なんか雑な気もするけどまあいいか」的なやり取りがあったりしたのかも
同様に件のファイルサイズ上限値の妥当性についても
「なんか雑な気もするけどまあいいか」的なやり取りがあったりしたのかも
同様に件のファイルサイズ上限値の妥当性についても
854デフォルトの名無しさん
2025/11/23(日) 12:54:45.11ID:W+o2V/Ez 旧アーキからエイヤとコピーした際に意図なく混入しただけなオチ
855デフォルトの名無しさん
2025/11/23(日) 13:02:01.49ID:W+o2V/Ez 現に旧アーキ側ではくだんの障害によるクラッシュなどはしておらず
ただし、すべてのトラフィックに対しボット判定かましてしまい、正規のアクセスまでもがブロックされてしまったわけだが
ただし、すべてのトラフィックに対しボット判定かましてしまい、正規のアクセスまでもがブロックされてしまったわけだが
856デフォルトの名無しさん
2025/11/23(日) 13:33:21.85ID:9zNPJk7D 問題なく動いてるフリさせといて異動でバイバイが有能だよ
857デフォルトの名無しさん
2025/11/23(日) 13:36:27.63ID:V3sZ/SAP858デフォルトの名無しさん
2025/11/23(日) 13:39:21.27ID:4nuItE/E 誰か>793にまともな反論できんのかな。
panicはプログラム緊急停止という重大な結果をもたらすから、緊急停止した後のことを制御できないなら使うべきじゃない。
このスレみたいに、それすら思いつかない無能コーダーが多いんだから、Safe Rustはpanic禁止すべき。
panicはプログラム緊急停止という重大な結果をもたらすから、緊急停止した後のことを制御できないなら使うべきじゃない。
このスレみたいに、それすら思いつかない無能コーダーが多いんだから、Safe Rustはpanic禁止すべき。
859デフォルトの名無しさん
2025/11/23(日) 13:55:54.10ID:Mgu/JJm0860デフォルトの名無しさん
2025/11/23(日) 14:14:22.85ID:FUNf3ZwY861デフォルトの名無しさん
2025/11/23(日) 15:06:02.14ID:um5S+wK/ んなわけない
>外部リソースへのアクセスがないロジックだけのプログラム
そんなものは存在しないというか、作ることは可能だが実用上存在意義がない
>外部リソースへのアクセスがないロジックだけのプログラム
そんなものは存在しないというか、作ることは可能だが実用上存在意義がない
862デフォルトの名無しさん
2025/11/23(日) 15:11:25.84ID:DNsCraN8863デフォルトの名無しさん
2025/11/23(日) 15:17:59.59ID:DNsCraN8864デフォルトの名無しさん
2025/11/23(日) 15:21:17.45ID:DNsCraN8 正しくは #![deny(unwrap_in_result)]だった
865デフォルトの名無しさん
2025/11/23(日) 15:22:45.23ID:FUNf3ZwY >>862
うん、そういう意味。
うん、そういう意味。
866デフォルトの名無しさん
2025/11/23(日) 16:12:59.81ID:DNsCraN8 >>865
そういう意味ならCloudflareのは外部リソースへのアクセスがないロジックだけのプログラムと言える
でも外部リソースの後片付けをした後ならpanicしていいわけじゃないからpanicが許される状況かどうかの判断基準としては適切じゃないよ
そういう意味ならCloudflareのは外部リソースへのアクセスがないロジックだけのプログラムと言える
でも外部リソースの後片付けをした後ならpanicしていいわけじゃないからpanicが許される状況かどうかの判断基準としては適切じゃないよ
867デフォルトの名無しさん
2025/11/23(日) 16:53:37.55ID:FUNf3ZwY >>866
> 外部リソースの後片付けをした後なら
ええと、話の前提として、プログラムやサービスをこのまま動作させることが適当でないエラーが発生した状況で、というのがあると思うんだが
今ここで話をしているのは、プログラムやサービスをこのまま動作させることが適当でないエラーが発生しうる箇所で、意図的に unwrapやpanicを使って終了させて良いか、そうでなくてエラーを上に上げるべきという意見が出たけどそれはどういうことか、という話だと思っていたんだけど違うのかな
それで >>842 で、外部リソースをオープン中ならその場で即終了するのはダメでクローズする必要がある、そのためにエラーを上に上げるべきで、そうでないならそこで終了しても問題ない、と答えたんだけど、それ以外にどんなケースや判断基準があるだろうか
> 外部リソースの後片付けをした後なら
ええと、話の前提として、プログラムやサービスをこのまま動作させることが適当でないエラーが発生した状況で、というのがあると思うんだが
今ここで話をしているのは、プログラムやサービスをこのまま動作させることが適当でないエラーが発生しうる箇所で、意図的に unwrapやpanicを使って終了させて良いか、そうでなくてエラーを上に上げるべきという意見が出たけどそれはどういうことか、という話だと思っていたんだけど違うのかな
それで >>842 で、外部リソースをオープン中ならその場で即終了するのはダメでクローズする必要がある、そのためにエラーを上に上げるべきで、そうでないならそこで終了しても問題ない、と答えたんだけど、それ以外にどんなケースや判断基準があるだろうか
868デフォルトの名無しさん
2025/11/23(日) 16:56:29.82ID:VRvQaZYz いやTCPのコネクションを開いてるでしょ
869デフォルトの名無しさん
2025/11/23(日) 17:24:25.83ID:PnhKXlJE Cloudflareの件で今回やるべきだったのは、パニックする前に監視システム向けに
最高の重要度でログだかイベントだかを送ることでしょ
最高の重要度でログだかイベントだかを送ることでしょ
870デフォルトの名無しさん
2025/11/23(日) 17:51:52.37ID:W+o2V/Ez >Enabling more global kill switches for features
>An outage like today is unacceptable.
当該サービスに限るなら公式が既に上記の見解を示しているかと
同様の障害時には「(ボット管理)機能を無効化する」が彼らの構え
つまり「安全に停止(パニック)する」よりも「可用性を優先すべき」がネットワークインフラを提供する立場としてのあるべき姿と見たわけだ
>An outage like today is unacceptable.
当該サービスに限るなら公式が既に上記の見解を示しているかと
同様の障害時には「(ボット管理)機能を無効化する」が彼らの構え
つまり「安全に停止(パニック)する」よりも「可用性を優先すべき」がネットワークインフラを提供する立場としてのあるべき姿と見たわけだ
871デフォルトの名無しさん
2025/11/23(日) 17:54:30.97ID:n/KY4xZ8872デフォルトの名無しさん
2025/11/23(日) 18:19:01.62ID:IuEnIF/H うーん、別にボット管理だけが特別に落ちやすいってわけでもないだろうに、後知恵対策の感が否めないなあ
実際にその通りやるかはともかく、世間に納得されやすそうな分かりやすい対策案を記載したんだろ
根本的な問題は誤ったパラメータファイルをロールバックできる仕組みがなかったことで、
そこを何とかしない限り今後何でもかんでもフェールソフト設計にしなきゃいけなくなりそう
実際にその通りやるかはともかく、世間に納得されやすそうな分かりやすい対策案を記載したんだろ
根本的な問題は誤ったパラメータファイルをロールバックできる仕組みがなかったことで、
そこを何とかしない限り今後何でもかんでもフェールソフト設計にしなきゃいけなくなりそう
873デフォルトの名無しさん
2025/11/23(日) 19:14:51.30ID:76/k8vRg >>870
限るならからあるべき姿まで語り出すのは飛躍
今回のは(可用性向上するための)ボット対策が悪さするなら止める方がマシなだけ
機密性やら完全性やら欠いても動かすかどうかは別問題
あるべき姿として可用性優先してるのではない
限るならからあるべき姿まで語り出すのは飛躍
今回のは(可用性向上するための)ボット対策が悪さするなら止める方がマシなだけ
機密性やら完全性やら欠いても動かすかどうかは別問題
あるべき姿として可用性優先してるのではない
874デフォルトの名無しさん
2025/11/23(日) 19:34:48.38ID:W+o2V/Ez >>873
つ >同様の障害時には
前後の文脈読まれたし
その上でより丁寧に書き直すなら以下になるかと
当該サービス(の当該案件)に限るなら、「安全に停止(パニック)する」よりも「可用性を優先すべき」がネットワークインフラを提供する立場としてのあるべき姿と見たわけだ
少なくとも以下の文章からは可用性をサービスの要と見ている節が読み取れるような気もするが
ただしだからといってそれが「機密性やら完全性やら欠いても動かすかどうかは別問題」と矛盾する趣意かは別問題
>An outage like today is unacceptable. We've architected our systems to be highly resilient to failure to ensure traffic will always continue to flow. When we've had outages in the past it's always led to us building new, more resilient systems.
つ >同様の障害時には
前後の文脈読まれたし
その上でより丁寧に書き直すなら以下になるかと
当該サービス(の当該案件)に限るなら、「安全に停止(パニック)する」よりも「可用性を優先すべき」がネットワークインフラを提供する立場としてのあるべき姿と見たわけだ
少なくとも以下の文章からは可用性をサービスの要と見ている節が読み取れるような気もするが
ただしだからといってそれが「機密性やら完全性やら欠いても動かすかどうかは別問題」と矛盾する趣意かは別問題
>An outage like today is unacceptable. We've architected our systems to be highly resilient to failure to ensure traffic will always continue to flow. When we've had outages in the past it's always led to us building new, more resilient systems.
875デフォルトの名無しさん
2025/11/23(日) 19:52:12.24ID:W+o2V/Ez >>872
実際はボット管理で言えばくだんのフィーチャーファイルとやらによる「更新をしない」分岐とかでは(エラーログの通知、及びそれに伴う都度の運用判断することなどは前提として)
当該機能の性格上、頻繁な更新を要することが今回の騒動に拍車をかけた形だろうし(その部分だけで見れば「(前提をネストさせた上で、にもかかわらずそれを無視すれば)"落ちやすい"」)
それにしては肝心のファイル生成をする当のクエリをノールック(あるいは見たけどスルー)でDBの権限変更したのはあまりに杜撰と見る向きもあるが
ちなみに改善手順と銘打って記載列挙された中には、上記のファイルに関するくだりも見られ、要するに「内部生成されたファイルも外部のそれと同等に扱う」とのことらしい
- Hardening ingestion of Cloudflare-generated configuration files in the same way we would for user-generated input
- Enabling more global kill switches for features
- Eliminating the ability for core dumps or other error reports to overwhelm system resources
- Reviewing failure modes for error conditions across all core proxy modules
しかしあの規模の、世界的なインフラ最大手がまさかの現場猫案件かますとは
後知恵バイアスと言われてしまえばそれまでなのだが、それにしてもな感はある
実際はボット管理で言えばくだんのフィーチャーファイルとやらによる「更新をしない」分岐とかでは(エラーログの通知、及びそれに伴う都度の運用判断することなどは前提として)
当該機能の性格上、頻繁な更新を要することが今回の騒動に拍車をかけた形だろうし(その部分だけで見れば「(前提をネストさせた上で、にもかかわらずそれを無視すれば)"落ちやすい"」)
それにしては肝心のファイル生成をする当のクエリをノールック(あるいは見たけどスルー)でDBの権限変更したのはあまりに杜撰と見る向きもあるが
ちなみに改善手順と銘打って記載列挙された中には、上記のファイルに関するくだりも見られ、要するに「内部生成されたファイルも外部のそれと同等に扱う」とのことらしい
- Hardening ingestion of Cloudflare-generated configuration files in the same way we would for user-generated input
- Enabling more global kill switches for features
- Eliminating the ability for core dumps or other error reports to overwhelm system resources
- Reviewing failure modes for error conditions across all core proxy modules
しかしあの規模の、世界的なインフラ最大手がまさかの現場猫案件かますとは
後知恵バイアスと言われてしまえばそれまでなのだが、それにしてもな感はある
876デフォルトの名無しさん
2025/11/23(日) 20:20:59.87ID:hAxz+HBT Cargoの管理ファイルがウザイな。
lib.rsまでは良しとしてmod.rsまで必要かえ?
PlatformIOのように全体一発でモジュールとクレート管理できんもんかね?
lib.rsまでは良しとしてmod.rsまで必要かえ?
PlatformIOのように全体一発でモジュールとクレート管理できんもんかね?
レスを投稿する
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★3 [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に ★2 [ぐれ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★3 [ぐれ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 【芸能】元尼神インター・誠子、来春に京都移住へ「フリーになって自分の幸せを見つけました」芸人活動は継続 [湛然★]
- 石破前総理「どうすれば台湾有事にならないかを考えるべき」★2 [1ゲットロボ★]
- 【実況】博衣こよりのえちえち朝こよ🧪★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【悲報】小野田紀美さん、宇宙人みたいな服を着てしまう…また、そのことを突っ込まれブチ切れ中www [856698234]
- 高市早苗の車のナンバー、中国人に気付かれて炎上wwwwwwwwwwwwwwwwwwwwwww [329329848]
- 習「中国とアメリカは軍国主義(日本)を倒した仲間。勝利の成果を守るために協力すべきだ」とトランプに呼び掛け。高市早苗、終了。 [153490809]
- 🏡
