[過去ログ] Rust part30 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
935: 06/20(金)11:10 ID:Dy/CHU8X(2/2) AAS
開発者向けにコードの意図を説明するのって普通はコメントだと思うんだよね
例えばunsafeを使っても安全な理由とかもコメントで書くし
なのにunwrapに限ってわざわざ文字列リテラルで書く理由が分からない(複数行や長文も書きづらいし)
コメントとの違いは実行時に表示できることではあるけど
実行時にその一文を出せて嬉しいか?
開発者なら結局周辺含めてコード読むんじゃない?
936(2): 06/20(金)11:19 ID:FlGaOpZd(1) AAS
書いてて思ったけど「このメッセージが表示されたらライブラリのバグなんでこのGithubまで報告してね」
みたいなメッセージなら意味あるかな、という気がした
エンドユーザーが見てちゃんと理解できるから実行時に出す意味もあるし、
ライブラリの内部エラーだからアプリケーション側には責任がないことも表明できるし
937: 06/20(金)11:25 ID:xog7LFS0(5/5) AAS
>>936
これいいな。OSSならそんな感じだしエンタープライズなら開発担当部門書いとこ
938: 06/20(金)12:33 ID:3ZKjcbd7(1) AAS
バグなんて他にもいくらでもあるんだから、それこそunwrapに限ってそんな懇切丁寧なケアをする理由がない
やらかした犯人なんてgit blameですぐわかる
939(1): 06/20(金)13:09 ID:LFsGGVpd(1/2) AAS
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");
// ...
省1
940: 06/20(金)15:04 ID:3ZuChe0s(1/2) AAS
>>939
基本的にはその考え方で正しい。
でも標準ライブラリや処理系すらそうしてないし、現実は理想通りではない。
941(1): 06/20(金)16:00 ID:r2H2v8it(1) AAS
Haskellにはならなかったな
Rustにもならないのでは?
942: 06/20(金)16:21 ID:+wQsfMK/(1) AAS
>>941
Rustは本来的にはコーディングの誤りに対して939のようにわりと問答無用でpanicする指向だと思うけど、
関数型というかHaskellかぶれのオモチャにされてるせいで実行時panicダサいみたいな空気が醸成されてきている一方で、
なんでも型のコンテキストで上手に扱えるほど型に表現力があるわけでもないから中途半端な感じになってるね
943: 06/20(金)16:41 ID:3ZuChe0s(2/2) AAS
システムプログラミング言語としての性質があるから仕方がない面はある。
ハードウェアやら OS やらが Rust の性質に従ってくれるとは限らないので言語の側で合わせないと仕方がない。
944: 06/20(金)16:53 ID:IXOAfd5T(1) AAS
Rustバランスいいよな
抽象度の高い記述ができつつC言語の代替もできる
945: 06/20(金)17:25 ID:LFsGGVpd(2/2) AAS
Haskellもボトム型あるから変わらんだろ
どの型の値も計算できない可能性を内包してる
946: 06/20(金)18:40 ID:0ePzwW3B(1) AAS
>>936
そういうのはまとめてpanic handlerに書いたほうがいいんじゃないかな
最近はあまり使われてないかもしれないけどhuman-panicとかがそれ用
あとstdのリファレンスにもexpectに書くメッセージのスタイルについて解説があった
外部リンク[html]:doc.rust-lang.org
947(2): 06/21(土)18:45 ID:usD2bL3Y(1) AAS
>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
にしたほうが堅さという意味ではよくない?
948: 06/21(土)19:54 ID:aOIRcMzj(1) AAS
外部入力が起源のデータに対しては必ずエラーを返す
プログラム自身発ならバグであり続行不可なのでpanicしてもよい
949(1): 06/21(土)19:55 ID:CfyG8iYl(1) AAS
>>947
NonZeroは非ゼロの保証というよりOptionと一緒に使うためのものだからね
NonZeroにしたところで結局呼び出し元でのチェックが0との比較からOptionのチェックに変わるだけのことでしかなく、
コードが冗長かつ余計なoptionが入ることでノイズが増え意図が不明瞭になるし、
unwrapしちゃったらpanic時のエラーもわかりづらい
ダメってわけじゃないが呼び出し元のことを考えると独善的な感が否めない
950: 06/21(土)22:49 ID:qYLKV/K+(1/2) AAS
>>949
>NonZeroは非ゼロの保証というよりOptionと一緒に使うためのものだからね
Optionと一緒に使うためのものというのはよく意味がわからない
例えばOptionに置き換えて考えてみたとしてこういう実装があったらおかしいと思わない?
fn make_buffer(size: Option<usize>) -> Buffer {
let size = size.expect("size must not be None”)
…
}
簡単に型で表現できないものならまだわかるんだけど
951: 06/21(土)23:02 ID:qYLKV/K+(2/2) AAS
呼び出し元は外部入力なら
let size = NonZeroUsize::new(input_size)?;
let buffer = make_buffer(size);
定数なら
let buffer = make_buffer(NonZeroUsize::new(1024).unwrap());
validation前とvalidation後で型を変えるプラクティスと同じでこっちのほうが望ましいことのほうが多いんじゃないかという気がする
952: 06/21(土)23:54 ID:l7fBsL1H(1) AAS
整理されて今はこう書くNonZero::<usize>::new(1024)
いずれにせよ外部データ由来時でもpanicさせ得る>>947は筋が悪い
953: 06/22(日)00:46 ID:DjMaTCto(1) AAS
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のコードを書く人間が異なっていて認識の齟齬があったりすればバグになるからエルゴノミクスとバグリスクのトレードオフってことになる
954: 06/22(日)01:30 ID:MKJ6VV9n(1) AAS
docコメントの
///
/// # Panics
///
/// Panics if `size` is zero.
///
とセットで見ないといけない
955(1): 06/22(日)09:45 ID:fHVyA0qw(1/2) AAS
RAIIが破綻するレベルのパニック、という意味の専門用語があればいいんだよね
956: 06/22(日)12:30 ID:4aXQSYOG(1) AAS
・人間の思考「脳波」は頭蓋骨の外に漏れない
人間の脳は発光していた!「脳が放つ光」の観測に初成功
2025.06.19 12:00:38 THURSDAY
外部リンク:nazology.kusuguru.co.jp
>>カナダ・アルゴマ大学(Algoma University)の最新研究で、ついにこの「脳の光」を頭蓋骨の外から観測することに成功したのです。
>>UPEは細胞の代謝活動、特に酸化反応によって発生する副産物の一種です。
>>以来、UPEはあらゆる植物や動物の細胞からも確認されており、生体内の酸化ストレスや老化、さらにはがんの診断補助にも応用が期待されてきました。
>>脳は体の中で最も代謝が活発な臓器のひとつであり、神経活動に伴って活性酸素が多く発生します。
>>チームは今回、20人の健康な成人を対象に、特殊な装置を用いた実験を実施しました。
>>被験者は真っ暗な部屋に座り、頭には脳波計を装着。
省8
957: 06/22(日)12:58 ID:LDKwjazM(1) AAS
>>955
パニックのレベルじゃなく処理単位の特性だけどUnwindSafeがある
958: 06/22(日)23:16 ID:fHVyA0qw(2/2) AAS
無限ループがあれば、終了しないスレッドや呼ばれないデストラクタもありうる
bottomもabortもpanicも、無限ループよりはマシだから禁止されない
959: 06/22(日)23:59 ID:ohTY4CfY(1) AAS
exitよりもpanicが優れている
多くのメリットがある
960: 06/23(月)15:14 ID:Lo0+xYyX(1/2) AAS
無職や転職をしたい
上記の方を紹介していただけませんか?
誰でも歓迎❣
未経験でも40歳まで採用しています⭕
ぜひご相談ください🙏
外部リンク:i-c-i.jp
電話番号
03-6459-0063
961: 06/23(月)15:14 ID:Lo0+xYyX(2/2) AAS
株式会社アイ・シー・アイ
野村総合研究所が設立した、信頼と実績のあるIT企業です。
未経験でも大丈夫!40歳までの方ならどなたでもご応募いただけます。
日本の大手大企業のソフトバンク、キャノングループ、富士産業で働けます!
雇用形態は無期雇用派遣。一つの現場で最低5年間じっくりインフラ運用監視の経験が積めます。
年収は280万円、賞与は年3回と安定した待遇をご用意し、「社員の人生を幸せにするため」の福利厚生も充実しています。
当社はまだまだスタートアップ。数年後には事業規模、
会社規模を倍増させたいと考えています。
その際、あなたには会社の中核メンバーとして、一緒に会社を引っ張っていただきたいのです。
962: 06/23(月)18:22 ID:uX2oVrQ8(1) AAS
人売りの奴隷集め
963: 06/23(月)21:09 ID:0odK9WS3(1) AAS
Z世代の皆様にしっかり稼いで頂きたいという思いから、高収入案件をご紹介させていただいております。
964(2): 06/24(火)22:23 ID:KcGBlJeb(1) AAS
Rustへ移行のためのドキュメント「C++ to Rust Phrasebook」発表
外部リンク:techfeed.io
C++でおなじみのイディオムや設計パターンを、Rust流にどのように書き換えるかを体系的に示したリファレンスである。
各章は具体的なコード例と、それに伴う設計上のトレードオフについての解説で構成される。
「C++ならこう書くがRustでは?」と行き詰まった場面で索引的に参照する使い方も想定されている。
上下前次1-新書関写板覧索設栞歴
あと 38 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s