Rust part30

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2025/05/28(水) 09:31:36.60ID:ciITeZ5D
公式
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 part29
https://mevius.5ch.net/test/read.cgi/tech/1746200850/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/06/18(水) 00:29:09.64ID:1jrMASAC
ここでの議論と同じだね
Rustでpanicするの明示的にpanicを起こすコードを書いたときだけ
2025/06/18(水) 01:06:16.44ID:aQwOTYhv
>>857
>Rustでpanicするの明示的にpanicを起こすコードを書いたときだけ

ここでもHNでもそんな議論はされてない
ただ複オジが連呼してるだけ
2025/06/18(水) 01:09:01.01ID:ZwZRjmCs
さっさとC++捨ててRustにすれば防げたのにな
2025/06/18(水) 01:12:36.99ID:SA0JPy/4
>>858
初心者は今回のこのまとめを見るといい
https://news.ycombinator.com/item?id=44281839
2025/06/18(水) 02:58:44.97ID:vm71nNgD
Googleの事案なんてどうでもよくてインシデントにかこつけてRustの布教がしたいだけ
だから何を書いても無駄
2025/06/18(水) 06:20:38.83ID:KrGEp9Dg
Rustを採用していれば防げた事案
2025/06/18(水) 09:57:10.50ID:NQ+tIPxW
>>848
本質は同じ

書き忘れではなくロジカルな思い違いもある
ここでnullはないやろとここErrはないやろは同じで思い込みだから

言語によって優劣とかじゃなく人間の限界がある
2025/06/18(水) 10:09:02.91ID:4yVSzLnj
>>863
全く違う
unwrap()はNone時にpanicを起こすための関数
書き忘れでpanicしない
2025/06/18(水) 10:20:51.18ID:NQ+tIPxW
> 書き忘れではなくロジカルな思い違いもある
2025/06/18(水) 10:31:14.78ID:GRTFL2K0
panicさせてはいけないプログラムでpanicさせる関数を呼ぶバカはいない
reviewでもバレる
2025/06/18(水) 10:49:25.62ID:NQ+tIPxW
メモリリークさせてはいけないぷろぐらむでめもりりーくさせるばかはいない!
2025/06/18(水) 11:01:39.66ID:Ulz+jHl5
Rustを使えばメモリリークも未定義動作もなく安全安心よ
2025/06/18(水) 11:23:14.90ID:lQpFkqVW
haskellと比べて、unwrapが気軽に使えすぎる気はする
2025/06/18(水) 11:33:39.23ID:S+5h0Q7c
ErrやNoneの時にpanic!を呼びたい場合が多いからunwrapがある
呼びたくないのに使うのは痴呆
2025/06/18(水) 11:34:34.48ID:FuDCb+RV
index out of boundsやdivide by zeroをはじめ意図せずpanicを起こすケースなんていくらでもある
2025/06/18(水) 11:39:44.34ID:SMOhWm6L
panicはcatchできるし
そのthreadが死ぬだけだし
困らんよな
2025/06/18(水) 11:43:26.69ID:U/ksL7Wg
>>871
panic禁止のプログラムのためにpanicしない方法が用意されていますよ
勉強しましょう
2025/06/18(水) 11:45:58.97ID:3o9Ti177
>>860
視野の狭い末端プログラマーの視点だな
システム全体が見えていない
2025/06/18(水) 11:46:56.90ID:3o9Ti177
>>873
視野の狭い末端プログラマーの視点だな
システム全体が見えていない
2025/06/18(水) 11:50:22.96ID:7xP0Uzu5
>>874
落ちてはいけないシステムをUB地雷だらけのC++で書くことが愚か
2025/06/18(水) 11:52:41.70ID:qy96omZz
>>875
Rustのスレでシステム全体って何やねん
説明してみ
2025/06/18(水) 12:16:05.81ID:iDJPvmxA
「意図したpanic」禁止したら良い
その「意図」が正しいのかコンパイラが静的分析出来ないから
2025/06/18(水) 12:29:52.79ID:rx2CZFrG
>>878
panicはプログラムやスレッドが続行不可能な時に正しく終了させるためにあります
禁止は困ります
2025/06/18(水) 13:09:11.05ID:uPLWgFQC
mseditorがpanicしたら編集中のデータが飛ぶけど、それが「正しく終了」か?
2025/06/18(水) 14:28:18.37ID:AeXwuQQu
ヌルポやバッファオーバーランに比べれば比較的マシ
2025/06/18(水) 15:01:02.42ID:90mEbGf5
意図的ヌルポでセグフォと
意図的unwrap panicでabortは同じ
2025/06/18(水) 15:13:41.28ID:5Mu65nKv
会社の怖い先輩が俺のコードはunwrapでいいんだよと言ったら、そうするしかないよね
2025/06/18(水) 15:24:13.90ID:45cvT+VF
まさかとは思うがnullチェックしてれば防げた障害だと思ってるやつがいるのか?
2025/06/18(水) 15:37:47.95ID:s5c+Ng5v
ぬるぽでクラッシュしたと聞いたけどnullチェックで防げないぬるぽってあるんすか
2025/06/18(水) 15:49:01.71ID:FHNv6txf
今どきC++で新たなコードを書くから悲惨な事故が起きた
2025/06/18(水) 16:01:28.34ID:hZyAyOg0
>>884
Rustなら防げたと言ってるあのおじさんを除けばそこまてのバカはいないかと
2025/06/18(水) 16:01:44.34ID:s5c+Ng5v
設定がおかしい場合の例外処理フローはあったけどそこに入る前にぬるぽで爆死した認識
2025/06/18(水) 16:35:49.37ID:YaS/uO3Z
RustならコンパイラがAIよりも厳密なチェックをしてるから防げるだろ
2025/06/18(水) 17:03:37.08ID:d8qsI0SX
Rustは言語仕様が優れているけど
言語仕様が腐っていればAIでも防げない
891デフォルトの名無しさん
垢版 |
2025/06/18(水) 17:43:59.13ID:mspDq+p2
世界最長のコンテキストウィンドウ100万トークン入力・8万トークン出力対応にもかかわらずたった7800万円でトレーニングされたAIモデル「MiniMax-M1」がオープンソースで公開され誰でもダウンロード可能に
2025年06月18日 11時43分
https://gigazine.net/news/20250618-minimax-m1-open-source/
>>MiniMax-M1は、合計4560億のパラメーターが含まれており、トークンごとに459億のパラメーターがアクティブになるとのこと。これはDeepSeek R1の8倍に相当するコンテキストウィンドウです
>>以下のグラフは競技レベルの数学、コーディング、ソフトウェアエンジニアリング、エージェントツールの使用、長文理解タスクにおけるパフォーマンスを主要な商用AIモデルと比較したもの。赤色がMiniMax-M1で、どのタスクにおいても競合AIモデルに匹敵するパフォーマンスを発揮できている
>>MiiniMax-M1はいくつかのベンチマーク、特に長いコンテキスト駆動のベンチマークでClaude Opus 4のパフォーマンスを上回りました」と報告
※AIを動作させている動画あり
↓上記のAIお下記をプレイさせれば性能が判明する
Gemini 2.5 Proは手持ちのポケモンが瀕死になるとパニックに陥る
2025年06月18日 12時30分
https://gigazine.net/news/20250618-pokemon-gemini-panic/

[プロテクトガードやセキュリティーホール発見可能]
※1 プログラムのバグ技[裏抜け道]を使用できる=チートコードを発見可能
・ マリオカートのショートカットはプレイヤー「極悪人」の表の抜け道でNPC「一般人」は使用不可能
[インサイダー/談合/なねーロンダリング/霊感商法など行う時の悪行で音波や電波をしての悪行の方法を発見可能
※ 政治家の法律上の抜け道を仕込める=ある業種だけの法律の抜け道を発見可能
[一般大衆の思考である特定の極悪人から目線を特定の統合失調症へ返させる装置]
※ AIは正確な情報で人間を信用させれる=AIは嘘の情報を一部混ぜて人間を洗脳できる
2025/06/18(水) 18:45:36.06ID:JUQ8VjRJ
まさかとは思ってたがnullチェックで防げたと勘違いしてるやつ結構いるんだな
2025/06/18(水) 19:12:39.40ID:M/E4rLLd
>読み込みデータに空白フィールドがあり、これがヌルポインタとなって参照した時点でクラッシュを引き起こした。
2025/06/18(水) 20:36:14.97ID:QsB71xf7
OptionやResultの型をきっかけとして問題に気付けた可能性はあるんじゃない?
あくまで間接的な可能性でしかなく、この件をもってRustだったら起きなかったとかいうのはアホ丸出しだけども
2025/06/18(水) 20:49:33.05ID:JDJPNF+q
Rustなら上位へそのエラー返して
その入力データに対するAPIでエラー返すだけだろ
2025/06/18(水) 22:27:10.05ID:/Y6EEbbi
>>894
いいかげんにしろよ
Rustでどうやって問題が起きるんだよ
2025/06/18(水) 22:47:29.81ID:BBnSRnVn
この件については、クラッシュを回避しエラーレスポンスを返したところで結局障害になることには違いがないからだな
2025/06/18(水) 22:51:57.91ID:ikP0pQuf
>>894
間接的な可能性もないでしょ
2025/06/18(水) 23:03:07.16ID:0KvtUriT
>>897
Googleのレポート見ろよ
エラーを返せていれば障害にならなかった
2025/06/18(水) 23:18:21.28ID:dYsLBH+C
>>899
そんなことどこにも書いてないぞ
エラーを返していればなんで障害にならないんだ?
回復不能なエラーだぞ
2025/06/18(水) 23:25:54.18ID:7PLt8980
Rustなら回避できたケースだけど
無理!と言う人は具体的に無理なシナリオを示してみたら?
2025/06/18(水) 23:41:41.61ID:sPCFWro/
ワロ
理解できないから教えてくれと言えばいいものを
2025/06/18(水) 23:53:20.04ID:jD4yZQcZ
公式読めよ
Rustにしてればポリシー変更データをエラーにして受け付けず落ちることもなく被害なし
2025/06/19(木) 00:10:11.24ID:oQzIUk1I
設定のミスで1台のATMが使えなくなるか全部のATMが使えなくなるかみたいな話でしょ
どっちも障害だから同じだって考え方もあれば
障害を1台に抑えることに価値があるって考え方もある
Rustでも防げないって人は前者だしRustなら防げたって人は後者
どっちの考え方もそれなりに正しい
2025/06/19(木) 00:25:10.66ID:KZlMfI+O
>>897
exponential backoffが実装されてなかったから
リクエスト単位のエラー返しにしてた場合は
復旧にもっと時間がかかってたと思われる

かといってC++でヌルポはだめだけどな
2025/06/19(木) 00:48:27.34ID:ftBjTcDx
>>905
新たなポリシー変更要求がエラーで受け付けられなくて落ちることもないから障害が起きていない
2025/06/19(木) 01:27:03.00ID:l2wwX0Hv
>>906
どこにそんなこと書いてる?
新しいポリシーがSpannerに書かれてレプリケートされた後の話だろこれ
908907
垢版 |
2025/06/19(木) 01:37:22.30ID:l2wwX0Hv
ああ、もしかしてポリシーのチェックというのをポリシー自体のバリデーションと勘違いしてるのかな
正しくはポリシーに基づいてAPIリクエストをチェックする処理のことなんで、新しいポリシーが反映された結果としての障害だよ
2025/06/19(木) 01:38:01.02ID:QXnAvsJc
>>904,906
君は何を言ってるんだい?
Googleのレポート見ろよ&&公式読めよブーメランが刺さってるぞ
2025/06/19(木) 02:14:01.17ID:Pd2QOZgo
>>908
新しいポリシーを反映させないか
反映させても空白のみエラーで飛ばせば障害は起きていない
2025/06/19(木) 04:21:35.41ID:yro0K3vV
Rustにしとけってことか、速い話が
2025/06/19(木) 05:04:25.47ID:ct5m24p0
落ちるプログラムを各リージョンにバラ撒かなければ何製でも防げてる
もちろんRustなら確実に防げた
2025/06/19(木) 06:59:17.36ID:tFafecL1
とにかくRustにすれば安心安全
これはもう常識
2025/06/19(木) 11:59:43.17ID:cYRDzc4D
ちゃんとした人が、Rustを使った場合に限る。
セキュリティもそうだけど、人が関わると碌なことがない。
2025/06/19(木) 12:27:53.31ID:/pQfT2SX
Rustは安全に配慮したコンセプトはいいけど、それを徹底できていない。
せめてSafe Rust強制モードとpanic禁止モードは用意しておくべきだった。
2025/06/19(木) 21:29:19.19ID:67nyX+fT
CPUとメモリは自由なunsafeが本質なので下位のライブラリは標準もデファクトもunsafeで作られている
2025/06/19(木) 21:38:06.06ID:67nyX+fT
panicは意図せず混入防止も兼ねてこんな運用が多いかな
[lints.clippy]
missing_panics_doc = "warn"
2025/06/19(木) 21:49:11.90ID:nNn4PbNI
標準ライブラリが内部では unsafe だらけというのは確かにそう。
外側に対しては安全になるように配慮してるけど、バグが絶対にゼロかというとそんなことはないし、実際に発見されたこともある。
まあ unsafe に限らず処理系や標準ライブラリにバグがあることを疑ってたらきりがないからそこらは割り切らないと仕方なくない?
2025/06/19(木) 21:56:40.37ID:6vmjzLKI
みんな律儀にResultは全てちゃんとハンドリングしてるの?
Mutex.lock() なんかは気にせず unwrap してるんだけど
2025/06/19(木) 22:11:01.42ID:nNn4PbNI
>>919
ロックが失敗するのはスレッドがパニックしたとき。
つまりハンドリングするならそのスレッド内のエラーであるべきで、 Mutex.lock の失敗に対してハンドリングしても出来ることがない。
そこは普通は unwrap してよいところだと思う。
2025/06/19(木) 23:34:30.87ID:67nyX+fT
そのmutex毒入り状態からの復帰処理をしたい場合はunwrapせずにErr時に処理とclear_poison()する
2025/06/20(金) 00:31:53.70ID:xog7LFS0
これおもしろー

https://blog.guillaume-gomez.fr/articles/2025-06-19+Rust%3A+Optimizing+integer+to+string+conversions

ポインターアクセスより配列の方が速いんやー
923デフォルトの名無しさん
垢版 |
2025/06/20(金) 01:02:39.89ID:SpbybkFq
unwrapではなくexpectを使う。
2025/06/20(金) 01:08:46.49ID:xog7LFS0
>>923
いや、Optionにはunwrap使ってええんやで
コードに合わせて柔軟に対応すりゃバグは防げるよ
ビジネスロジックのバグは入念なテストしないと見つけられないけどね
ビジネスロジックのバグでシステム障害になることもまあ、あるっちゃあるよねテストしてなきゃ
2025/06/20(金) 01:13:11.37ID:/9Nz/yYP
>>922
昔読んだが00~99のテーブルをコピーするところだな
配列境界検査は起きないコードだから速度は同じ
2025/06/20(金) 01:18:17.09ID:/9Nz/yYP
>>924
panic許容シーンでない場合
絶対Some保証できない場ではunwrapもexpectも使わないよな
2025/06/20(金) 07:50:16.10ID:d5bZ3vB1
expectに書く文がいまいち分からんのだよな
エンドユーザーがその一文だけ見て何か意味があるとも思えないし
デバッグする開発者向けなら結局前後の文脈込みで見るしかないから
unwrapにして詳細をコメントに書いたほうがいい気がしている
2025/06/20(金) 08:04:54.66ID:Op1qS17W
>>927
ユーザに文章を示してpanicさせたいの?
文章をprintかeprintしてからpanic!呼んだら?
2025/06/20(金) 08:15:40.44ID:d5bZ3vB1
>>928
いや、そうじゃなくて「unwrapの代わりにexpectを使ってunwrapしても大丈夫な理由を明記すべき」みたいな言説があるじゃん?
そのときにexpectに書くべき文がわからんって話

ユーザ向けにエラーとして表示したいならそりゃ普通にResult使うし、
どうしてもパニックしたいならprintlnすればいいのはその通りだけど
2025/06/20(金) 08:22:37.63ID:xog7LFS0
基本フロントエンド側とAPIのエラーコード、エラーメッセ仕様は最初に決めておくから、あとは「どの関数レイヤーで」そのIFに合わせこむかだけじゃない?
ここのスレ多分Rustを業務用で使ってる人ばっかだから仕様の取り決めとから雇用主から降ってくるもんだと思うけど。返すエラー定義決まってなきゃそもそもテストコード先に書けないし、納品物にもテスト結果入れれなくて困るしな
2025/06/20(金) 08:25:55.42ID:xog7LFS0
個人的にはtracing::debug!で自分用のデバッグ出力はON/OFFしてるけど、エラーコードやエラーメッセージは案件別に全然仕様が違うwwwやめてwwwから、仕方なくErrで一旦上げてresponse.bodyに詰め込む直前で相手さんの期待する結果になるようにparseしてることが多い

フロントエンド側で翻訳ぐらいせえやーって思うけど、たまにバックエンドで各言語に合わせて翻訳やってくれー案件もあったりするしバラバラで何考えてんのかはよー分からん
2025/06/20(金) 09:04:21.71ID:ymNSNGAk
>>929
https://doc.rust-lang.org/std/error/index.html#common-message-styles
に尽きると思うが、何がわからんのかわからん
原則としては例外ケースが生じない確信があろうとエラーコンテキストは引き継がれるべきで、
panicさせるのは当該ケースの対処のしようがないことがその場で明らかなケースのみ
そして君のコード内でコントロールのしようがない事象である以上は基本的にそれは外部要因によるものだろうから、その要因を記載すればいい
2025/06/20(金) 09:47:50.29ID:Dy/CHU8X
>>932
外部要因ならコード作者は制御できないんだからResultで表現すべきではない?
unwrapするケースって「このコードパスではxは(自分が書いたロジックが間違ってなければ)確実にSomeだから安全にunwrapできるはず」みたいなのだと思うんだけど、
その文をexpectに書いたとして誰が読むんだ?って疑問
2025/06/20(金) 10:32:17.84ID:p4ugM+VW
panic時のメッセージは未来の自分を含めて他の開発者向け

ここの2つを読んでおくといいと思う
https://burntsushi.net/unwrap/#why-not-use-expect-instead-of-unwrap
https://www.thecodedmessage.com/posts/2022-07-14-programming-unwrap/
2025/06/20(金) 11:10:25.36ID:Dy/CHU8X
開発者向けにコードの意図を説明するのって普通はコメントだと思うんだよね
例えばunsafeを使っても安全な理由とかもコメントで書くし
なのにunwrapに限ってわざわざ文字列リテラルで書く理由が分からない(複数行や長文も書きづらいし)
コメントとの違いは実行時に表示できることではあるけど
実行時にその一文を出せて嬉しいか?
開発者なら結局周辺含めてコード読むんじゃない?
2025/06/20(金) 11:19:56.95ID:FlGaOpZd
書いてて思ったけど「このメッセージが表示されたらライブラリのバグなんでこのGithubまで報告してね」
みたいなメッセージなら意味あるかな、という気がした
エンドユーザーが見てちゃんと理解できるから実行時に出す意味もあるし、
ライブラリの内部エラーだからアプリケーション側には責任がないことも表明できるし
2025/06/20(金) 11:25:39.91ID:xog7LFS0
>>936
これいいな。OSSならそんな感じだしエンタープライズなら開発担当部門書いとこ
2025/06/20(金) 12:33:04.85ID:3ZKjcbd7
バグなんて他にもいくらでもあるんだから、それこそunwrapに限ってそんな懇切丁寧なケアをする理由がない
やらかした犯人なんてgit blameですぐわかる
2025/06/20(金) 13:09:09.82ID:LFsGGVpd
expectは使用者とか使用状況に対する期待だと思ってた
メッセージはコメントのPanicsに対応させる感じ

/// ...
///
/// # Panics
/// - Panics if the given size is 0.
///
pub fn make_buffer(size: usize) -> Buffer {
let nz_size = NonZeroUsize::new(size).expect("size must be non-zero");
// ...
}
2025/06/20(金) 15:04:20.99ID:3ZuChe0s
>>939
基本的にはその考え方で正しい。
でも標準ライブラリや処理系すらそうしてないし、現実は理想通りではない。
941デフォルトの名無しさん
垢版 |
2025/06/20(金) 16:00:22.03ID:r2H2v8it
Haskellにはならなかったな
Rustにもならないのでは?
2025/06/20(金) 16:21:36.04ID:+wQsfMK/
>>941
Rustは本来的にはコーディングの誤りに対して939のようにわりと問答無用でpanicする指向だと思うけど、
関数型というかHaskellかぶれのオモチャにされてるせいで実行時panicダサいみたいな空気が醸成されてきている一方で、
なんでも型のコンテキストで上手に扱えるほど型に表現力があるわけでもないから中途半端な感じになってるね
2025/06/20(金) 16:41:57.96ID:3ZuChe0s
システムプログラミング言語としての性質があるから仕方がない面はある。
ハードウェアやら OS やらが Rust の性質に従ってくれるとは限らないので言語の側で合わせないと仕方がない。
2025/06/20(金) 16:53:23.26ID:IXOAfd5T
Rustバランスいいよな
抽象度の高い記述ができつつC言語の代替もできる
2025/06/20(金) 17:25:54.91ID:LFsGGVpd
Haskellもボトム型あるから変わらんだろ
どの型の値も計算できない可能性を内包してる
2025/06/20(金) 18:40:08.56ID:0ePzwW3B
>>936
そういうのはまとめてpanic handlerに書いたほうがいいんじゃないかな
最近はあまり使われてないかもしれないけどhuman-panicとかがそれ用

あとstdのリファレンスにもexpectに書くメッセージのスタイルについて解説があった
https://doc.rust-lang.org/std/error/index.html#common-message-styles
2025/06/21(土) 18:45:15.07ID:usD2bL3Y
>pub fn make_buffer(size: usize) -> Buffer {
>let nz_size = NonZeroUsize::new(size).expect("size must be non-zero");

事前条件がNonZeroなら
pub fn make_buffer(size: NonZeroUsize) -> Buffer
にしたほうが堅さという意味ではよくない?
2025/06/21(土) 19:54:31.34ID:aOIRcMzj
外部入力が起源のデータに対しては必ずエラーを返す
プログラム自身発ならバグであり続行不可なのでpanicしてもよい
2025/06/21(土) 19:55:55.14ID:CfyG8iYl
>>947
NonZeroは非ゼロの保証というよりOptionと一緒に使うためのものだからね
NonZeroにしたところで結局呼び出し元でのチェックが0との比較からOptionのチェックに変わるだけのことでしかなく、
コードが冗長かつ余計なoptionが入ることでノイズが増え意図が不明瞭になるし、
unwrapしちゃったらpanic時のエラーもわかりづらい
ダメってわけじゃないが呼び出し元のことを考えると独善的な感が否めない
2025/06/21(土) 22:49:35.45ID:qYLKV/K+
>>949
>NonZeroは非ゼロの保証というよりOptionと一緒に使うためのものだからね
Optionと一緒に使うためのものというのはよく意味がわからない

例えばOptionに置き換えて考えてみたとしてこういう実装があったらおかしいと思わない?
fn make_buffer(size: Option<usize>) -> Buffer {
let size = size.expect("size must not be None”)

}

簡単に型で表現できないものならまだわかるんだけど
2025/06/21(土) 23:02:46.26ID:qYLKV/K+
呼び出し元は外部入力なら
let size = NonZeroUsize::new(input_size)?;
let buffer = make_buffer(size);

定数なら
let buffer = make_buffer(NonZeroUsize::new(1024).unwrap());

validation前とvalidation後で型を変えるプラクティスと同じでこっちのほうが望ましいことのほうが多いんじゃないかという気がする
2025/06/21(土) 23:54:32.82ID:l7fBsL1H
整理されて今はこう書くNonZero::<usize>::new(1024)
いずれにせよ外部データ由来時でもpanicさせ得る>>947は筋が悪い
2025/06/22(日) 00:46:32.15ID:DjMaTCto
slice::windowsとかstdでも似たような実装はそれなりにある
pub fn windows(&self, size: usize) -> Windows<'_, T> {
let size = NonZero::new(size).expect("window size must be non-zero");
Windows::new(self, size)
}

windowサイズはバグ以外では0を指定しないだろうという想定だと思うがcalleeとcallerのコードを書く人間が異なっていて認識の齟齬があったりすればバグになるからエルゴノミクスとバグリスクのトレードオフってことになる
2025/06/22(日) 01:30:55.82ID:MKJ6VV9n
docコメントの
///
/// # Panics
///
/// Panics if `size` is zero.
///
とセットで見ないといけない
2025/06/22(日) 09:45:37.71ID:fHVyA0qw
RAIIが破綻するレベルのパニック、という意味の専門用語があればいいんだよね
956デフォルトの名無しさん
垢版 |
2025/06/22(日) 12:30:29.11ID:4aXQSYOG
・人間の思考「脳波」は頭蓋骨の外に漏れない
人間の脳は発光していた!「脳が放つ光」の観測に初成功
2025.06.19 12:00:38 THURSDAY
https://nazology.kusuguru.co.jp/archives/179808
>>カナダ・アルゴマ大学(Algoma University)の最新研究で、ついにこの「脳の光」を頭蓋骨の外から観測することに成功したのです。
>>UPEは細胞の代謝活動、特に酸化反応によって発生する副産物の一種です。
>>以来、UPEはあらゆる植物や動物の細胞からも確認されており、生体内の酸化ストレスや老化、さらにはがんの診断補助にも応用が期待されてきました。
>>脳は体の中で最も代謝が活発な臓器のひとつであり、神経活動に伴って活性酸素が多く発生します。
>>チームは今回、20人の健康な成人を対象に、特殊な装置を用いた実験を実施しました。
>>被験者は真っ暗な部屋に座り、頭には脳波計を装着。
>>その周囲には、光電子増倍管(PMT)と呼ばれる極微弱な光を検出する装置が配置されました。
>>そして被験者には、目を開ける/閉じる、あるいは音楽(120BPM)を聴くといったシンプルなタスクを行ってもらい、その間のUPEと脳波の変化を同時に測定したのです。
☆>>まず、脳からのUPEは背景光(周囲の空気中のノイズ)とは明確に異なる変動パターンを持つことが判明したのです。
>>とくに後頭部(視覚野)と側頭部(聴覚野)から検出された光は、安静時でも一定のリズムと変動性を示し、他の部位とは異なるスペクトル的特徴を持っていました。
>>さらに目を閉じたときに増える「アルファ波」と呼ばれる脳波の活動と、UPEの強さが同期していることも発見されました。
>>これはつまり、脳の電気的な信号(脳波)と、化学的な代謝反応(UPE)が連動していることを意味します。
>>この成果は、従来のfMRIやPETスキャンのような「重装備で高コスト」な装置を使わずとも、非侵襲・低刺激で脳機能の状態を“光”から読み取る可能性を示すものです。
>>研究者たちはこの新しい手法を「光脳波記録(photoencephalography)」と名付けました。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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