Rustアンチスレ (202レス)
Rustアンチスレ http://mevius.5ch.net/test/read.cgi/tech/1509028624/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
123: デフォルトの名無しさん [sage] 2022/04/27(水) 16:14:27.17 ID:fXEX2s7j >>122 Rustはそのために例えば足し算でも checked_add overflow_add wrapping_add saturating_add など用途毎に使い分けられるようになっている http://mevius.5ch.net/test/read.cgi/tech/1509028624/123
126: デフォルトの名無しさん [] 2022/04/27(水) 18:53:45.96 ID:DngKLmNp >>123 そういうことを言いたいんじゃない。releaseとdebugで動きが異なることを言いたいのだ。例えばGoなどはどちらも動きはわからない。 Rustはどう考えても、プログラムの1つ1つを完全に知りえていなければプログラムを書いてはならず、安全な側へ倒すのではなく、releaseでオーバーフローを省略するのにそれで速いとゴマカしている。計算系のベンチマークテストなどまさにそう また上のように「用意している」という表現も、限りなく敷居をわざと高くしているだけで、何の利点でもない。 http://mevius.5ch.net/test/read.cgi/tech/1509028624/126
127: デフォルトの名無しさん [sage] 2022/04/27(水) 18:55:26.96 ID:j3SjDNhs >>123 checked_add (=足し算でoverflowするとOption::Noneを返す) 便利だな 例としてすぐオーバーフローするi8型(符号付き8bit整数)を使って フィボナッチ数列イテレータを書いてみた fn fibonacci_i8() -> impl Iterator<Item=i8> { itertools::unfold((0_i8, 1), |(m, n)| m.checked_add(*n).map(|f| { *m = *n; *n = f; f }) ) } fn main() { for f in fibonacci_i8() { print!("{f} "); } } 出力結果: 1 2 3 5 8 13 21 34 55 89 確かに上限127を超えて溢れる寸前まで求まっている http://mevius.5ch.net/test/read.cgi/tech/1509028624/127
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.010s