Rust part33

1デフォルトの名無しさん
垢版 |
2025/08/15(金) 17:49:30.70ID:N8TIzbWg
公式
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/
724デフォルトの名無しさん
垢版 |
2025/11/18(火) 18:19:31.62ID:TiXA9NK+
ESP32 ArduinoからRust変換はおもろかった。
App、Domain、Infrastructure構造のDDDで作ったプロジェクトだけど、純粋仮想関数(interface)もInjectionもRust移行がこんなに簡単なのかと驚いたもんだ。
ValueObjectも不要になったし、いろいろDDDには最適な言語。
まぁ コンパイルは通ってもワーニングを無くす作業が大変だったのは言うまでもない。
ワーニングリストてんこ盛りでも動くところがなんだかなぁとはオモ。
Rustはオヌヌメだよ。 本当に。
725デフォルトの名無しさん
垢版 |
2025/11/18(火) 21:33:50.31ID:9E8x7tFx
驚いた!
2025/11/18(火) 23:38:02.37ID:hMgPiOc6
>>724
その手の問題のほとんどがクラスを捨ててトレイトを採用すると解決するよね
純粋仮想関数という奇妙な名前を含めた概念もトレイトの『実装必須メソッド』とそれらを用いた特定の型に依存しない『デフォルト実装提供メソッド』の二つに整理されると使いやすくわかりやすい
依存性の注入や逆転も『トレイトを利用する型々⇔トレイト⇔トレイトを実装する型々』と最初から分離されて対応している
Value Objectもどこまで何をやるかで多少変わるけど基本的にはラッパーにPartialEq/EqやClone/Copyそしてバリデーション付き生成のTryFromなど基本トレイトを必要なだけ実装していくだけで大方の対応ができる
2025/11/19(水) 00:21:53.18ID:IfvLhI2w
iter().filter(...).map(...) みたいなのってデバッグ用のビルドだとすごく遅くない?
リリースビルドだと最適化されるんだろうけど、 デバッグ時のことを考えると要素数が大きい場合は普通に for で書いた方が良いんだろうか
2025/11/19(水) 04:26:37.69ID:VwytrS17
libxml2がメンテナー不在状態になっちゃったらしいけど
これってRust採用に有利に働くのでは?
しかも、最後のメンテナーが「セキュリティバグ満載の趣味プログラムだから製品に採用してる大企業の方がおかしい」とか言い出してる

ま、Rustからlibxml2呼んで使ってた人もいるかもしれんが
2025/11/19(水) 08:24:12.23ID:R5nvtzxr
>>728
これは追い風だな
自社開発せなあかんとなれば金払ってでも雇うだろうし
2025/11/19(水) 10:14:56.27ID:DEKdhoZN
https://blog.cloudflare.com/18-november-2025-outage/#memory-preallocation
ふう
今回もRust自体の問題じゃなくてRustを誤用したCloudflareの無能のせいでよかったよかった
2025/11/19(水) 10:38:40.48ID:VwytrS17
>>730
Cloudflareですら、本番環境で雑にunwrap()呼んでるんだから
この関数はもう許されたんだな
2025/11/19(水) 11:21:56.78ID:dZVJ1Iyu
>>731
Result返す関数内だから
.unwrap();

?;
にするだけなのにな
2025/11/19(水) 11:50:56.97ID:GsWNWOPW
そのままmainまで巻き戻ってエラー値でプロセス終了
panicじゃないからねって責任分散w

真面目に言語として対策するならResult::unwrap()をunsafeにする事だな
2025/11/19(水) 12:57:15.96ID:WcZFNgrM
>>733
設定ファイルの読み出しでエラーなのだから、続行することが悪なのであって、panicもしくはmainでエラー値を返して終了のどちらでも正しい。
このプログラムの異常終了を検知して、然るべき自動対応もしくは人間へアラートを発生させることが通常のシステム運用だ。
2025/11/19(水) 16:36:17.53ID:a6iYqrEC
>>733
unwrap()は必ずチェックをしてくれるsafeな関数
チェックをしないunwrap_unchecked()がunsafeな関数
後者はチェックが不要であることを人間が保証しなければいけない
2025/11/19(水) 18:15:22.62ID:FpyXWrvw
unwrap()じゃパニックした理由が分からんから、せめてexpect()を使うべきだったのでは?
2025/11/19(水) 18:44:42.33ID:NvQTXkF4
>>730
>今回もRust自体の問題じゃなくてRustを誤用したCloudflareの無能のせいでよかったよかった
こういうおバカな考え方をするやつにシステムプログラミングをさせてはいけない
絶対にダメ
2025/11/19(水) 19:17:35.77ID:AEqphh7h
そもそも「Rustを誤用した」箇所がないだろ
フェールセーフなシステム運用では異常時に異常なデータのまま動き続けることこそ最悪な惨事
パニックでプロセスが落ちてくれれば上位で必ず検知できてその対処ができる
739デフォルトの名無しさん
垢版 |
2025/11/19(水) 19:18:38.06ID:Rm5s9Hvl
Rcってスマートポインター自体はポインターとサイズ一緒で参照先にカウンターがあるんだよね
2025/11/19(水) 22:57:00.67ID:CLMpOrw3
>>739
スタック上のサイズは通常のポインターと同じだけど
スタック上のポインターだけを指して「Rcのスマートポインター自体」と呼ぶのはちょっと微妙
2025/11/19(水) 23:28:21.13ID:H9/nxH2R
>>739
その通り
例えば64bit環境において
Rc<usize>はスタック上に64bit一つ分(ヒープを指す64bit)とヒープ上に64bit三つ分(強カウントと弱カウントとusizeの各64bit)
Rc<[usize]>はスタック上に64bit二つ分(ヒープを指す64bitと長さの64bit)とヒープ上に64bitが二つ+長さ分(強カウントと弱カウントと[usize])
つまりスタック側にスライスの長さ用で+1とヒープ側に強弱カウント用で+2
2025/11/19(水) 23:50:27.39ID:H3eXqgcn
まーたフェイク垂れ流してんなw
2025/11/19(水) 23:59:17.25ID:3P61Qd+t
正しくても嘘だフェイクだと暴れるだけのおじさん
2025/11/20(木) 02:07:52.80ID:ncYlBBwT
ChromeはXSLT機能を廃止するらしい
件のlibxml2と同じ人がメンテしてて放棄されたlibxsltにセキュリティ問題があると見て
2025/11/20(木) 05:14:44.24ID:MGDS7leX
Rustすごい!驚いた!
2025/11/20(木) 10:18:35.91ID:9zm/YaRl
Cloudflareの障害って半年前のGoogle Couldの障害と同じパターンじゃん
確か「Rustなら防げた」とかアホなこと言ってたやつがいたな
2025/11/20(木) 10:22:16.48ID:syoVlbLx
>>736
実際にはパニックと同時に出るバックトレース以上の情報なんて書けないからいらないと思う
中身がおかしいです!それはわかってる。
2025/11/20(木) 10:47:57.16ID:9zm/YaRl
>>747
>中身がおかしいです!それはわかってる。
ファイルの中身がおかしいと特定するのに2時間もかかったのに?
2025/11/20(木) 11:21:06.60ID:syoVlbLx
>>748
バックトレースでわかる、落ちたソース行と変数がわかっててもそれなりに調査がいる部位で
ここが落ちた原因はこのファイルです!加えてこのファイルがおかしい理由はこれです!って
人間様なら事前に言えるのかって話だけど・・・。しかも全てのunwrapで
2025/11/20(木) 12:03:26.09ID:21pecUNF
>>738
フェイルセーフを勘違いしてるな
雑にunwrapするのはこういうやつだろ
2025/11/20(木) 12:37:12.92ID:k44P4Y1f
>>738
> 上位で必ず検知できてその対処ができる

この手の信者が野放しのせいで#[no_panic]が通らない
2025/11/20(木) 14:34:42.78ID:MlUTgZBl
>>749
要するにバックトレースでは不十分だったということ
expectのメッセージがあれば解決がかなり早まった可能性が高い

ただ外部データを読み込んでその妥当性をチェックした結果のResultなんだからパニックさせるのが論外
2025/11/20(木) 14:38:44.38ID:MlUTgZBl
今回も前回もアホなこと言ってるやつは同じだね
https://mevius.5ch.net/test/read.cgi/tech/1748392296/807-n
2025/11/20(木) 19:55:50.61ID:xKPp4vJ3
>>752
みんながパニックさせるのを正解と言ってるのに一人だけパニックさせるのが論外と主張するからには代案を書きなさいよ
755デフォルトの名無しさん
垢版 |
2025/11/20(木) 20:59:55.94ID:3WAFNuDQ
>>730
Rustに投資するマネジメント層からすれば、
「想定可能なケースでpanicするな」「終了するなら理由を明らかにしろ」「終了した後のことを考えろ」
あたりだよなぁ。

panicなんてシステムが異常になるレベルで初めて使うことを考えるようなもの。
コーダーには触らせたくないから、SafeRustはpanic禁止でいいと思うわ。
2025/11/20(木) 21:09:11.15ID:vBNaAq/W
ワイも unwrap は論外と思うやで。
ロジック的に失敗があり得ないから失敗の場合のことは書くのを省略するというのが unwrap の役割だろ。
失敗がないはずのところで失敗したならそれはロジックに誤りがあったということ。
つまりはバグだ。
プログラムにバグを書くのが正しいってことはない。

でも panic するのは正しいかもしれない。 (公開情報だけでは断言はできないけど。)
正しくないデータに対してプログラムが回復する余地がないなら終了するしか仕方ないし、
その問題にどう対処するかは運用の問題なので必要なログを残した上で終了するのは正しい。

特に今回の事例はメモリまわりの制御が絡んでいるということがある。
メモリが足りないままで続けるとあらたにメモリが必要な状況が生じて破綻するかもしれない。
エラーを返して上位レイヤで判断するのはロジック的には綺麗だがリソース不足の状況ではそうも言ってられない。
757デフォルトの名無しさん
垢版 |
2025/11/20(木) 21:24:39.80ID:W1oxwi29
>>756
Again, the limit exists because for performance reasons we preallocate memory for the features.
だから、コーダーでもコントロール可能な範囲じゃない?
こんなんじゃリーナスじゃなくてもpanic禁止言いたくなるわな。
2025/11/20(木) 21:39:21.39ID:lwx9Ifqo
>>754
パニックさせるのが正解などというバカのことを言ってるのは複オジ一人だけじゃん
自分の意見を複製してもなりすまし書き込みしてもみんなが言ってることにはならないよ
2025/11/20(木) 21:50:20.55ID:H4pjbMpd
これは普通にpanicで正解でしょ
メモリを固定ではなくfeatureファイルに合わせて動的アロケーションするようにしていれば即障害にはならなかっただろうけど、
それはunwrapの是非とかの次元の話じゃないし、複おじの頭はそこまで回らないだろう
2025/11/20(木) 21:50:58.54ID:ao6/JbGK
続行不可能なのだからどこかで必ずpanicすることになる
C言語ならexit(non-0)
Rustはもっと賢いpanicがありそれを使う
他に手はない
2025/11/20(木) 21:56:43.11ID:uDj2zLmM
続行可能なら上位へエラーを返せばいいんだよね
続行不可能なら上位へエラーを返すより即panicさせるのが正しいよ
その方がバックトレース的にも有利
762デフォルトの名無しさん
垢版 |
2025/11/20(木) 22:04:24.95ID:A4EEH+q2
続行可能/不可能はコーダーが判断することではないよ。ふつうにエラーを返せ。
2025/11/20(木) 22:09:40.31ID:uDj2zLmM
>>762
続行不可能なのにエラーを返してどうするの?
そこでpanicさせるしかないよ
2025/11/20(木) 22:18:59.74ID:H4pjbMpd
>>762
起動時に必要なデータなんだろうから、エラー返したところで上位でもどうしようもないでしょ
仮にエラーを無視してそのまま起動させたとして、不正な状態だからってリクエストを5xxで落とすのはまずいのはさすがに分かるよな?
Bot Managementというのがどれだけ重要なのかは知らないけど、
最悪それが機能してなくてもいいならエラー無視してそのモジュールの処理だけ飛ばすのは結果論としてはアリだったかも
でもそれ言い出したら極論何でもかんでもフェールソフトにしなきゃいけないから、それこそゆるふわ設計になりすぎてRustのメリットが薄れちゃうよ
765デフォルトの名無しさん
垢版 |
2025/11/20(木) 23:12:52.86ID:eUKDlPgK
もっと簡単にエラー科研のこやつは
766デフォルトの名無しさん
垢版 |
2025/11/20(木) 23:13:07.19ID:eUKDlPgK
アプデで改善しーやー
767デフォルトの名無しさん
垢版 |
2025/11/20(木) 23:13:24.18ID:eUKDlPgK
もう普通にtry catchでええ
768デフォルトの名無しさん
垢版 |
2025/11/20(木) 23:13:43.88ID:c/hk2jJw
Rustのプログラム開発デバッグそして運用実行時の問題発生で最も役立つ仕組みがpanicなのにそれを理解しないでpanicを毛嫌いしてる人がいる不思議~
769デフォルトの名無しさん
垢版 |
2025/11/20(木) 23:38:50.21ID:bMsqNQja
>Rustのプログラム開発デバッグそして運用実行時の問題発生で最も役立つ仕組み

具体的になんの開発時にそう感じたの?
770デフォルトの名無しさん
垢版 |
2025/11/21(金) 02:04:51.36ID:iIZE15hu
>>764
>起動時に必要なデータなんだろうから

そーなん?どこ情報?
2025/11/21(金) 02:19:37.89ID:bQYXRKni
>>764
公式は以下があるべき姿と見ているようだが

>Remediation and follow-up steps

>Remediation and follow-up steps
>Now that our systems are back online and functioning normally, work has already begun on how we will harden them against failures like this in the future. In particular we are(今後同様の障害が発生した場合に備え、以下を重点とするシステムを強化する取り組みに着手):

> - 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(エラー状態の障害モードを見直す)

>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.(今回のような障害は容認できない、耐障害性の高い新しいシステムを構築するきっかけとなった)

https://blog.cloudflare.com/18-november-2025-outage/#remediation-and-follow-up-steps

>>768
そんなのサービス要件、用途、場面次第では
そもそもエラーの可能性を含意するResultを返していることを意にも介さず、ハンドリングしないのは言語の思想にもとるかと
パニックの好悪ではなく、サービス要件、場面に対してミスマッチだと指摘されているのでは
2025/11/21(金) 02:41:53.57ID:7QFg1F5C
panic禁止派がいるからでしょ
結局プログラムを終了させるなら深いところでpanicさせることでバックトレース情報を最大化しましょう
773デフォルトの名無しさん
垢版 |
2025/11/21(金) 03:02:34.17ID:aQgyxReD
panic禁止派って、正常な関数だと辿りつかない状態になったらどうすんの?
anyhowとかでthis is bugとかって返すの?
2025/11/21(金) 03:12:36.25ID:BgHvS9/N
それを議論して何か自分のためになることがあると思うの?
775デフォルトの名無しさん
垢版 |
2025/11/21(金) 03:19:36.71ID:szwMnzU9
てかたまに思うんだけどエラー処理てif文でよくね?
2025/11/21(金) 04:06:05.39ID:bmEBh7Lw
>>771
Resultが返ってきた時にpanicさせることは立派なハンドリングだよ
例えば読み込み必須なデータファイルがopenできずにErrを返しプログラムが続行できないからpanicなど
2025/11/21(金) 06:09:46.10ID:pxhgH2KX
日本語翻訳があるんだから、少しは元記事に目を通せや。
https://blog.cloudflare.com/ja-jp/18-november-2025-outage/

cloudflareはエラーハンドリングに失敗して原因追求できずに大規模DDoS攻撃と誤認したんだろ。
このケースでpanicが正しかったとはとても思えない。
2025/11/21(金) 07:16:25.89ID:z62qyAHj
現場コーダー(ここでエラーハンドリングしたらそのぶんテストしなきゃいけないな。
でも今日は早めに帰って家でゲームしたいんだよね。うーん…怖いけどunwrapするか。
なーに、下っ端は仕様書の前提をただ信じればいいだけさ。これでよし、帰ろっと。)
53日後…ウェブが死んだ
779デフォルトの名無しさん
垢版 |
2025/11/21(金) 07:27:20.23ID:YVVnWYXM
>>773
「設計通りあれば辿り着きえない」なら assert や unreachable じゃないの?
expected でも良い
これは「どうエラーをハンドルするか」という問題ではなく「ソースコードの読み手に対し設計者の意図をどのように表明するか」という話な気もする
780デフォルトの名無しさん
垢版 |
2025/11/21(金) 07:46:53.00ID:5wtRNmya
https://doc.rust-jp.rs/book-ja/ch09-03-to-panic-or-not-to-panic.html
2025/11/21(金) 08:17:21.30ID:m9VdLfOa
>>777
後からは何とでも言えるが、開発時点でこういった失敗を想定して対処できたのか?って話
Googleも最近似たようなことやらかしてるんだからな
絶対に必要不可欠というわけでもなさそうな処理だが、かといって内部のパラメータさえ適切に設定されていれば無難に動くものなんだろうから、
こうした状況に対処するための設計上の強力なポリシー(おそらく今回のトラブルをきっかけに策定される)がない限り、
それが安易にクリティカルパスに組み込まれてしまうことは仕方ないように思える
逆にデフォルトのポリシーとしてフェイルソフトを優先するようなことをすれば、>>764の通りOptionalだらけのゆるふわ設計につながる
2025/11/21(金) 09:00:31.31ID:P6+MwwhU
>>781
>後からは何とでも言えるが、開発時点でこういった失敗を想定して対処できたのか?って話
むしろなんで想定できなかったのか不思議なくらいの稚拙な問題なんだが
2025/11/21(金) 09:04:46.72ID:XNdnsjIs
>>781
>逆にデフォルトのポリシーとしてフェイルソフトを優先するようなことをすれば、>>764の通りOptionalだらけのゆるふわ設計につながる
これも間違った考え方だな
「フェイルセーフ」の正しい理解と合わせて耐障害性設計の基本を学んだほうがいい
2025/11/21(金) 09:27:12.92ID:7pvsHy8Q
>>781
>後からは何とでも言えるが、開発時点でこういった失敗を想定して対処できたのか?って話

Result「・・・」
2025/11/21(金) 09:34:42.48ID:TUdbr/Fo
>>782
そう思うならさっさとそのクソブラック企業辞めてCloudflareかGoogleに転職したらどうだ
年収150万ドルは堅いぞ
2025/11/21(金) 09:52:08.85ID:aGwiM0lE
>>772
>結局プログラムを終了させるなら深いところでpanicさせることでバックトレース情報を最大化しましょう
Resultを上位に伝播させるのも面倒だし伝播させた後の対応も面倒だから雑にpanicで終了させましょうという話だな
こう考えるやつが少なからずいるようならRustを使う開発者の能力の問題だけでなくRust自身の問題ということになる
2025/11/21(金) 10:02:37.01ID:eVGGGIM3
想定可能なエラーでも続行不能ならpanicさせてバックトレース見ましょうみたいな運用がCloudflareの規模で成り立つわけないのにね

性能要件的にバックトレース無効にしてる可能性もある
2025/11/21(金) 10:16:37.50ID:z62qyAHj
とにかく全部ハンドリングしようぜ
あらゆるケースを想定するべきだ
2025/11/21(金) 10:30:47.14ID:aLBJCcru
設定に異常値が紛れ込んでもpanicで止めたくないならunwrapをunwrap_or_defaultあたりに替えとけばいいよ
とりあえず動く
2025/11/21(金) 11:56:46.17ID:x3e9+uyj
>>779
横からだがこの議題でpanicと呼ばれていることはpanic!を引き起こすassert!やunreachable!やexpectなどの総称でしょう
2025/11/21(金) 11:59:34.90ID:x3e9+uyj
>>789
それは最悪でしょ
異常値や情報不足のままプログラムが動作しないように止める役割がpanic
panicさせないプログラムは信用できない
2025/11/21(金) 12:10:50.33ID:Bq7cxlpS
今回のCloudflareの件で言うとあそこでpanicさせなかったら
事前に確保したより大きなメモリ確保しようとしてプロセスがランダムにkillされたり
より意味不明な事態になったかもね
793デフォルトの名無しさん
垢版 |
2025/11/21(金) 12:38:52.46ID:kvfum7jC
panic肯定派は色々と分かっていないなぁ。

「続行不能ならpanicさせて緊急停止させるべき」というなら、緊急停止させた後のことも考えて状況を制御しろ。panicさせた後のことは分からん、と言うのならpanicさせるな。
それすら思いつかない無能コーダーが大半なんだから、無能コーダー向けのsafe rustはpanic禁止すべき。
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.
2025/11/21(金) 13:18:58.19ID:x3e9+uyj
>>794
panicは必要不可欠なものだという話をしている
unwrapでpanicしろなんて話はしていない

>>794
Cliudflareの話はしていない
panic禁止すべき!と書き込む頭のおかしい人がいるから話をしている
2025/11/21(金) 13:22:16.60ID:aLBJCcru
>>791
上位でcatch_unwindはしてると思うけど延々と同じ異常値使ってpanic繰り返してた感じでしょ
自分もpanicで抜ける方が正しいと思うけどこれだけpanicに文句言う人が多いなら異常値無視して動かした方がよくね?
設定無視しても多少セキュリティに穴が開く程度だろうし
2025/11/21(金) 13:35:17.28ID:bQYXRKni
>>795
安価付けてレスをするならせめて当該のレスツリーくらい把握されては
こちらが指摘かました >>792 氏は明確に今回のCloudflareに言及している
したがって「panicの要否」ではなく、「panicの適否」に対するそれなわけであり
「unwrapでpanicしろなんて話はしていない」んじゃなくって、今回当該サービスにおいてそうした実装がされていたんだよ現実に
その上で「panic禁止すべき!と書き込む頭のおかしい人」への反論をしたいのであれば、くだんのCloudflare大規模障害を文脈に含むレスに安価かますのは筋違いかと
2025/11/21(金) 13:54:38.91ID:x3e9+uyj
すまんな
何らかのミスでアンカが1つずれてた
>>794でなく>>793へのレス
2025/11/21(金) 14:11:04.02ID:bQYXRKni
おーらい
2025/11/21(金) 14:57:18.03ID:fa/ssAob
unwrapがあったらリリースビルドが失敗するようにしてほしいよね
801デフォルトの名無しさん
垢版 |
2025/11/21(金) 15:31:33.26ID:xINfobxx
rustのdrop traitってメモリー解放前の前処理を記述する場所で
dorpはメモリーを開放するというのは違うよね
2025/11/21(金) 15:53:54.77ID:G3R9bFuG
drop は明示的に呼出し (いわゆる早期 drop) てもそれ自体がメモリを解放するとは限らないが、言語機能と融合している特別なトレイトなのでメモリの解放のタイミングに影響を与えることはありうる。
2025/11/21(金) 23:25:47.85ID:auLVIhoC
redditからの借り物
https://i.imgur.com/oEZoQJd.png
2025/11/21(金) 23:56:05.84ID:kB1g97LF
そんなもんだ
過去を引きずる案件以外でC++を使う人は消えていく
2025/11/22(土) 00:16:12.45ID:Z+ns1hWs
こんなもん完成に用途によるだろ
実際にそれ系本場の組み込みとかでの普及率こそ指標とするべきではないの?
2025/11/22(土) 00:17:49.35ID:Z+ns1hWs
❌完成に
⭕完全に
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.
2025/11/22(土) 01:07:20.55ID:iexvlmA9
>>789
>設定に異常値が紛れ込んでもpanicで止めたくない
入力値と設定そのものを混同してるよね?
設定に反映させるために読み込んだ入力値が必須条件を満たしてないだけであってアプリの振る舞いを左右する設定自体に異常値が紛れ込んでいるわけではないよ
809デフォルトの名無しさん
垢版 |
2025/11/22(土) 05:50:44.36ID:6IzbV+e7
クラウドフレアでのやらかしでrustも失墜だね
2025/11/22(土) 05:58:51.95ID:CapHAAXn
遅くて安全じゃないって最悪じゃん
811デフォルトの名無しさん
垢版 |
2025/11/22(土) 07:02:46.20ID:Hhj8j98Q
>>795
>793への返信かね。
panicは大多数のコーダーには不要で有害だという話をしている。
unwrapでpanicするようなコーダーには触れないようにしろという話だよ。
2025/11/22(土) 07:04:22.51ID:IiIf7f1d
>>809
安全性が示されただろ
どこに危険な問題があったんだ?
813デフォルトの名無しさん
垢版 |
2025/11/22(土) 08:36:23.79ID:TcBJjde/
>>811
Mutex使用禁止ということか
2025/11/22(土) 08:57:51.52ID:m6/1q0Jm
>>812
安全性が反面、可用性とはトレードオフであることも示されたのかと
サービスの性格を正確に理解しないまま、言語の持つ安全性を盲信することは容易に問題となりうることも
2025/11/22(土) 10:11:24.12ID:YjCm7wO7
>>813
それは皮肉でもなんでもなくて、Mutexのlock().unwrap()は実際panicするからpanic厳禁派なら絶対NGよ
matchでlockの結果をチェックしないとダメ
2025/11/22(土) 11:09:17.53ID:2DsIii2D
Rustのunwrap()というのはそもそも前提が壊れたらpanicするイディオムであるので、
もしpanic厳禁派を標榜するならケースバイケースで使っていいものではなく絶対にソースコード上に登場させてはならない
2025/11/22(土) 12:33:52.35ID:TG+W7F+c
unwrapの使い方なんてrustユーザー側の設計思想やリスク管理に依るものであって、結局は開発組織の質の問題よ
2025/11/22(土) 12:59:01.17ID:W9tILc9J
unwrapの間違った使い方をしたり間違った使い方を正しいと思い込んでる人がこれだけいるんだから開発組織の質の問題として片付けられないよ

Rustの構造的な問題と言っていい
2025/11/22(土) 13:01:14.64ID:GfzAj2LS
>>814
安全性と可用性は両立ができる
両立が不可能なことは例えば分断時の可用性と一貫性など
2025/11/22(土) 13:03:18.34ID:GfzAj2LS
>>818
unwrap自体に間違った使い方なんてものはないよ
常に安全に用いることができる
2025/11/22(土) 13:34:45.55ID:m6/1q0Jm
>>819
>両立ができる

「言語の持つ安全性を盲信することは容易に問題となりうること」を理解した上でそれらをどこまで両立させるかの見極めこそが、まさに設計の要では
両者がトレードオフであることを意識してこそ妥協点が見えるわけであり
でなくばいずれは一方が他方の隘路になるのかと
際限のない両立などに再現性はあるまいて
2025/11/22(土) 14:08:27.01ID:HvD57uvC
unwrapとかシンプルすぎて誤用の余地ないだろ
2025/11/22(土) 14:16:46.80ID:iWDV6POw
unwrapは未定義動作を生じないという意味においては安全
その結果として自動運転車が人混みに突っ込んだり原子炉がメルトダウンしたりしないことを保証するものではない
2025/11/22(土) 14:55:39.41ID:W1QChhvL
分かってない人が多いけど、unwrap_or_default で安全サイドなデフォルト値で動かせば絶対に問題なんて起きないんだが
そのための設計だし初期値で動かないとしたらそもそも設計ミス
単にunwrap使ってそのままというのはダメ。世の中急に止めたら復旧大変なシステムとかもあるんでね
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況