公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
日本語の情報
https://rust-jp.rs/
※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/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
※次スレは原則>>980が立てること
前スレ
Rust part14
https://mevius.5ch.net/test/read.cgi/tech/1644596656/
Rust part15
■ このスレッドは過去ログ倉庫に格納されています
2022/05/12(木) 18:28:20.99ID:cuIcFT6k
226デフォルトの名無しさん
2022/05/21(土) 10:59:08.26ID:5oK/i29u227デフォルトの名無しさん
2022/05/21(土) 11:34:26.44ID:jUaeJjgy228デフォルトの名無しさん
2022/05/21(土) 11:47:35.41ID:vC8/2hE9 ぼくはガベージコレクションが嫌いです
229デフォルトの名無しさん
2022/05/21(土) 11:50:19.62ID:KkLFGMWv オライリー本もヒープとかスタックとか出てくるあたり、CやC++で動的メモリ確保の面倒くささを知ってる人向けだと思う
230デフォルトの名無しさん
2022/05/21(土) 11:50:43.88ID:uR6sIAw1 メモリ管理まわりの勉強はcで必須
231デフォルトの名無しさん
2022/05/21(土) 11:56:37.53ID:5oK/i29u 逆に考えよう
C→Rustと進むだけで十分であり、何か困ることある?
困ることないよな
C→Rustと進むだけで十分であり、何か困ることある?
困ることないよな
232デフォルトの名無しさん
2022/05/21(土) 12:04:35.32ID:CYzzzsUy ゴミ集めてどうするんだっていう。
233デフォルトの名無しさん
2022/05/21(土) 12:06:48.99ID:gyqhSlT2 十分かどうかはさておき
そもそもCをすべきかどうかというと微妙かもしれない
Cしかやってなさそうな人特有の
・変数がたくさんとっちらかった
・変数名が暗号めいてて
・ifやforが多重になってて
・グローバル変数を平気で使っちゃってる
コードみたことあるでしょ
それはそうするしかやり方を知らないから
一方、抽象度の高い言語からやった人は先にそっちに慣れるんで
List(8, 9, 3, 1).sorted.reverse.foreach(print)
こういうふうにスッキリ書けるのを目指してくれる
そもそもCをすべきかどうかというと微妙かもしれない
Cしかやってなさそうな人特有の
・変数がたくさんとっちらかった
・変数名が暗号めいてて
・ifやforが多重になってて
・グローバル変数を平気で使っちゃってる
コードみたことあるでしょ
それはそうするしかやり方を知らないから
一方、抽象度の高い言語からやった人は先にそっちに慣れるんで
List(8, 9, 3, 1).sorted.reverse.foreach(print)
こういうふうにスッキリ書けるのを目指してくれる
234デフォルトの名無しさん
2022/05/21(土) 12:09:45.76ID:0tb1eDc3 オブジェクト指向がいちばん大事
235デフォルトの名無しさん
2022/05/21(土) 12:10:08.62ID:Uoz2jgaJ 格下相手の話だけイキイキするな
236デフォルトの名無しさん
2022/05/21(土) 12:12:07.01ID:5oK/i29u237デフォルトの名無しさん
2022/05/21(土) 12:39:26.68ID:5HpZ3As+ ありがたみなんて知る必要ないでしょ
典型的な老害だな
典型的な老害だな
238デフォルトの名無しさん
2022/05/21(土) 12:39:58.62ID:0jWT+RR4 >>221
C++ と java はやったけど C# 必要ですか?
C++ と java はやったけど C# 必要ですか?
239デフォルトの名無しさん
2022/05/21(土) 13:06:24.69ID:dZzrxVLl Rustは、プログラミング経験者向けの情報が多い気がするから、PythonとかJavascript辺りをサラッと試してからでも良い気はする。
コンパイルとはとか、型って何?とか。
コンパイルとはとか、型って何?とか。
240デフォルトの名無しさん
2022/05/21(土) 14:18:25.43ID:2XTF0B5o241デフォルトの名無しさん
2022/05/21(土) 14:45:48.56ID:is6KmnjI いつも同じパターン
質問や相談があると、答えたり情報を出したりせずに、それらをしている人たちをバカにする
コードが出ると、代案コードを出すわけでもなく、とにかく批判のみ行なう
質問や相談があると、答えたり情報を出したりせずに、それらをしている人たちをバカにする
コードが出ると、代案コードを出すわけでもなく、とにかく批判のみ行なう
242デフォルトの名無しさん
2022/05/21(土) 14:51:09.52ID:/NlDQvZW プログラミング初心者は言語知識よりも
プログラミングという行為がどういうものなのか
どういうことを考える必要があるかというメタ認知を得ることが最も重要
メタ認知を獲得するために最も効果・効率ともに高い方法は
考えて・書いて・動かして結果を確認するというフィードバックサイクルをとにかく繰り返し回すこと
初心者は上記のサイクルが回しやすい言語から始めると後々の成長が早い
C/C++/Rustはサイクルを回すために越えなければならないハードルが相対的に高いため
現代では初心者向け言語ではない
プログラミングという行為がどういうものなのか
どういうことを考える必要があるかというメタ認知を得ることが最も重要
メタ認知を獲得するために最も効果・効率ともに高い方法は
考えて・書いて・動かして結果を確認するというフィードバックサイクルをとにかく繰り返し回すこと
初心者は上記のサイクルが回しやすい言語から始めると後々の成長が早い
C/C++/Rustはサイクルを回すために越えなければならないハードルが相対的に高いため
現代では初心者向け言語ではない
243デフォルトの名無しさん
2022/05/21(土) 14:57:49.13ID:7TYnpeBW244デフォルトの名無しさん
2022/05/21(土) 15:08:42.12ID:d40Kl4Hf 意訳:
ぼくちゃんがかいたさいきょうのコードをひはんしないでくだしゃい
ぼくのかんがえたやつがさいきょうなんでしゅから
ぼくちゃんがかいたさいきょうのコードをひはんしないでくだしゃい
ぼくのかんがえたやつがさいきょうなんでしゅから
245デフォルトの名無しさん
2022/05/21(土) 15:15:12.95ID:terB7Bhw なでしこ(プログラミング言語)も使ってあげて、、
246デフォルトの名無しさん
2022/05/21(土) 15:15:33.24ID:lzMNCHOR お前ら>>205みたいなのにも反応してやれよ
247デフォルトの名無しさん
2022/05/21(土) 15:46:51.93ID:zcBlczkH >>246
前スレがいしゅつ
前スレがいしゅつ
248デフォルトの名無しさん
2022/05/21(土) 16:45:07.99ID:dBYh2+4n >>218
そのかかれてるC++入門本のタイトルあげてみろ
そのかかれてるC++入門本のタイトルあげてみろ
249デフォルトの名無しさん
2022/05/21(土) 16:48:39.25ID:dBYh2+4n250デフォルトの名無しさん
2022/05/21(土) 16:54:22.75ID:dBYh2+4n お前ら新しい言語勉強する時に本読まないの?
たいていの本には想定する読者ってのが最初のほうに書いているだろ。
現在出版されてるRustの本で他の言語全く使った事ない読者を想定してる本はあるのか?
たいていの本には想定する読者ってのが最初のほうに書いているだろ。
現在出版されてるRustの本で他の言語全く使った事ない読者を想定してる本はあるのか?
251デフォルトの名無しさん
2022/05/21(土) 17:14:51.81ID:is6KmnjI >>246
Tauriではなくweb-view crateがシンプルで良いと思う
Tauriではなくweb-view crateがシンプルで良いと思う
252デフォルトの名無しさん
2022/05/21(土) 17:17:44.98ID:is6KmnjI253デフォルトの名無しさん
2022/05/21(土) 17:21:24.15ID:7bviEaCH おれは基本は本を読む派だけど、読まない派のほうが多そう
254デフォルトの名無しさん
2022/05/21(土) 17:23:04.81ID:mDh+ij7H 昔は本買うか図書館行くかしかなかったもんね
二十年くらい前からこっちはもう本イランけど
ネットで見れるでしょ何もかも
二十年くらい前からこっちはもう本イランけど
ネットで見れるでしょ何もかも
255デフォルトの名無しさん
2022/05/21(土) 17:26:29.76ID:ImS18vsK 最近はもっぱら言語公式のチュートリアル。Rustだと「the book」
256はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 17:33:54.80ID:JD6rd3hb257デフォルトの名無しさん
2022/05/21(土) 17:59:31.75ID:WnQbOX9f 確かにこのスレではよく見る
>>112,113
>>112,113
258デフォルトの名無しさん
2022/05/21(土) 18:16:32.63ID:5PeJx3n4 複オジは本を読まないのが原因とは違うと思うぞ
本を読んでも自分勝手な理屈を脳内補完してそれが正しいと思い込むタイプ
本を読んでも自分勝手な理屈を脳内補完してそれが正しいと思い込むタイプ
259デフォルトの名無しさん
2022/05/21(土) 18:31:09.43ID:Uoz2jgaJ260デフォルトの名無しさん
2022/05/21(土) 18:55:12.40ID:is6KmnjI >>259
web-view crateは非常にシンプルで
最初のwebviewビルダーと
JavaScript側からのRustの呼び出しと
Rust側でJavaScriptの実行の三つだけをサポート
学習コストもほぼゼロ
だから更新するようなことがほとんど無い
それでも例えばHTMLのonclick等でRust側を呼び出せてRust側で処理してJSで反映ということが出来てうれしい
web-view crateは非常にシンプルで
最初のwebviewビルダーと
JavaScript側からのRustの呼び出しと
Rust側でJavaScriptの実行の三つだけをサポート
学習コストもほぼゼロ
だから更新するようなことがほとんど無い
それでも例えばHTMLのonclick等でRust側を呼び出せてRust側で処理してJSで反映ということが出来てうれしい
262デフォルトの名無しさん
2022/05/21(土) 19:12:43.38ID:is6KmnjI263デフォルトの名無しさん
2022/05/21(土) 19:21:14.01ID:v1GULhnc たしかに
「そういった人」への批判は意味がなくて、荒れるだけで、誰の役にも立たない
「そういった人」への批判は意味がなくて、荒れるだけで、誰の役にも立たない
264デフォルトの名無しさん
2022/05/21(土) 19:27:36.73ID:tJscH9kk 「そういった」がかかるのは「人」ではなく「批判」じゃないのかな
265デフォルトの名無しさん
2022/05/21(土) 19:30:02.17ID:gcU5DXZF 元のレスをもじっただけで
唐突に殴りかかってくる人には何を言っても無駄だよと諭してるだけでは
唐突に殴りかかってくる人には何を言っても無駄だよと諭してるだけでは
266デフォルトの名無しさん
2022/05/21(土) 19:32:49.23ID:VA28KJC+ 多くの人は良い人たちだが
残念ながらこのスレにも他人を叩いたり言いがかりを付けたりするのが好きなアレな人が紛れ込んでいる
残念ながらこのスレにも他人を叩いたり言いがかりを付けたりするのが好きなアレな人が紛れ込んでいる
267デフォルトの名無しさん
2022/05/21(土) 19:43:36.19ID:7bviEaCH そういうのは反応を見て楽しもうとしてるだけだろうから、無視するしかない
268デフォルトの名無しさん
2022/05/21(土) 21:18:46.48ID:3ug0n3Zl >>260
tauriも同じようなもんじゃないの?
tauriも同じようなもんじゃないの?
269デフォルトの名無しさん
2022/05/21(土) 23:40:28.85ID:GKlgLxBR 今流行のアプリをweb-viewのテストで作ってみたがこんな感じなのか
const HTML: &str = r#"
なぜかHTML部分はセキュリティうんぬん言われて貼れないので略
"#;
fn main() {
struct Fibonacci { index: usize, cur: usize, pre: usize }
let fibonacci = std::sync::Mutex::new(Fibonacci { index: 0, cur: 0, pre: 1 });
let webview = web_view::builder()
.content(web_view::Content::Html(HTML))
.invoke_handler(|webview, arg| {
match arg {
"next" => {
let mut f = fibonacci.lock().unwrap();
(f.index, f.cur, f.pre) = (f.index + 1, f.cur + f.pre, f.cur);
webview.eval(&format!("show({}, {})", f.index, f.cur))?;
},
"exit" => webview.exit(),
_ => unimplemented!(),
};
Ok(())
})
.user_data(()).build().unwrap().run().unwrap();
}
const HTML: &str = r#"
なぜかHTML部分はセキュリティうんぬん言われて貼れないので略
"#;
fn main() {
struct Fibonacci { index: usize, cur: usize, pre: usize }
let fibonacci = std::sync::Mutex::new(Fibonacci { index: 0, cur: 0, pre: 1 });
let webview = web_view::builder()
.content(web_view::Content::Html(HTML))
.invoke_handler(|webview, arg| {
match arg {
"next" => {
let mut f = fibonacci.lock().unwrap();
(f.index, f.cur, f.pre) = (f.index + 1, f.cur + f.pre, f.cur);
webview.eval(&format!("show({}, {})", f.index, f.cur))?;
},
"exit" => webview.exit(),
_ => unimplemented!(),
};
Ok(())
})
.user_data(()).build().unwrap().run().unwrap();
}
270デフォルトの名無しさん
2022/05/22(日) 13:23:37.89ID:kzep88by MozilaはFirefoxを丸ごとRustに書き換える予定はあるん?
今はまだ一部だけだよねRustになってるの
今はまだ一部だけだよねRustになってるの
271デフォルトの名無しさん
2022/05/22(日) 14:00:05.26ID:IGyJdnKj >>270
そうなの?
そうなの?
272デフォルトの名無しさん
2022/05/22(日) 14:06:50.95ID:1cbV2u9G FirefoxはレンダリングエンジンをRustでゼロから作ってるんじゃないの?
273デフォルトの名無しさん
2022/05/22(日) 14:11:38.83ID:s/f+VQic274デフォルトの名無しさん
2022/05/22(日) 14:14:17.72ID:pc68DccV servoはまだ実験段階だったと思う
275デフォルトの名無しさん
2022/05/22(日) 14:54:56.44ID:kzep88by >>273
ありがとう~
ありがとう~
276デフォルトの名無しさん
2022/05/22(日) 15:29:45.38ID:srSb/t9O >>270
特にそういう予定はないと思う
servo自体も別に次世代Firefoxを目指してるとかではなく、Rustでwebブラウザを書く実験プロジェクトという感じ
その実験でうまく行ったコンポーネントを徐々にFirefoxに移植していっている
特にそういう予定はないと思う
servo自体も別に次世代Firefoxを目指してるとかではなく、Rustでwebブラウザを書く実験プロジェクトという感じ
その実験でうまく行ったコンポーネントを徐々にFirefoxに移植していっている
277デフォルトの名無しさん
2022/05/22(日) 15:57:34.13ID:pc68DccV アプローチとしては正しい姿なんだろうな
278デフォルトの名無しさん
2022/05/22(日) 17:29:35.11ID:1mUE50i3 暇を持て余した神々の遊び
servoと言うよりモンスターエンジンだね…
servoと言うよりモンスターエンジンだね…
279デフォルトの名無しさん
2022/05/22(日) 17:37:14.17ID:7nmc6Bff >>270
C++で書かれてる部分は置き換えられるかも知れないけどJSで書かれてる部分までは置き換えしないんでないかな
C++で書かれてる部分は置き換えられるかも知れないけどJSで書かれてる部分までは置き換えしないんでないかな
280デフォルトの名無しさん
2022/05/22(日) 19:19:39.37ID:9fWZc0TE JSとか言ってるのは君だけだと思うよ
281デフォルトの名無しさん
2022/05/22(日) 19:22:44.24ID:7nmc6Bff >>280
FirefoxではC++と同じくらいJS使われてるよ
https://www.openhub.net/p/firefox/analyses/latest/languages_summary
FirefoxではC++と同じくらいJS使われてるよ
https://www.openhub.net/p/firefox/analyses/latest/languages_summary
282デフォルトの名無しさん
2022/05/22(日) 19:25:56.61ID:nrxT1a+p JSの部分を置き換えるなんてはなから誰も思ってないってことだと思うが
283デフォルトの名無しさん
2022/05/22(日) 19:26:01.69ID:LKVhbTwj 意訳すると「JSで書かれてる部分まで置き換えるとか言ってるのは君だけだと思うよ」かな?
言ってないね
言ってないね
284デフォルトの名無しさん
2022/05/22(日) 19:29:03.65ID:7TIjBb30285デフォルトの名無しさん
2022/05/22(日) 19:33:12.87ID:LKVhbTwj286デフォルトの名無しさん
2022/05/22(日) 19:46:00.83ID:u+qheqhP287デフォルトの名無しさん
2022/05/22(日) 19:56:58.26ID:nleMAmaj >>270 が「Firefox を "丸ごと" 書き換える」と言っていたので全部はRustにならないよと伝えたんだけどなんかお気に召さなかった?
288デフォルトの名無しさん
2022/05/22(日) 20:16:58.99ID:KMOjS2oh289デフォルトの名無しさん
2022/05/22(日) 20:17:09.14ID:M3jNarf6 そうだね、そんなふうに言われたらシェルスクリプトやMakefileまでrustで置き換えるんじゃないかって思っちゃうよね。
馬鹿なん?
馬鹿なん?
290デフォルトの名無しさん
2022/05/22(日) 20:36:16.46ID:7nmc6Bff FirefoxはXULのイメージがあってJSも主要な構成要素だと思ってたから変なレスつけちゃったね
皆さんの機嫌害しちゃって申し訳ない
皆さんの機嫌害しちゃって申し訳ない
291デフォルトの名無しさん
2022/05/22(日) 20:54:23.92ID:KMOjS2oh292デフォルトの名無しさん
2022/05/22(日) 22:32:56.13ID:7nmc6Bff293デフォルトの名無しさん
2022/05/23(月) 01:12:40.07ID:436cwmll >>290
ほんと反省しろよ
ほんと反省しろよ
294デフォルトの名無しさん
2022/05/23(月) 02:27:31.54ID:n+tkR/ue 反省してま~す
295デフォルトの名無しさん
2022/05/23(月) 19:27:40.26ID:qJLEBqNZ >>189
おまえら全員そうだがフィボナッチ数列でusize固定はおかしいだろ
コード自体は問題ないが <T: Zero + One + CheckedAdd> を付けろ
あとは0と1をT::zero()とT::one()へ置き換えればi8型からBigUintまで何でも動作するようになる
https://play.rust-lang.org/?edition=2021&gist=929f3df48db39182558dfad6fe8d1cda
さらに今回はfrom_fn()利用をそのままsuccessors()利用へ変換できるので見やすくなる
fn fibonacci_iter<T: Zero + One + CheckedAdd>() -> impl Iterator<Item = T> {
let mut oq = Some(T::one());
iter::successors(Some(T::zero()), move |p| {
let q = oq.take()?;
oq = q.checked_add(p);
Some(q)
})
}
ちなみにCloneを要求しないためBigIntなどでも無駄なコスト増とならない
>>202
そのコードは暗黙のコピーが発生している
from_fn()使用版のコードはcurrがキャプチャ変数なので「let n = curr?;」でコピー発生
successors()使用版のコードはクロージャ引数「|&curr: &usize|」の「&」でコピー発生
usizeならば問題はないがBigIntなどでそのコードは動かないので劣る
おまえら全員そうだがフィボナッチ数列でusize固定はおかしいだろ
コード自体は問題ないが <T: Zero + One + CheckedAdd> を付けろ
あとは0と1をT::zero()とT::one()へ置き換えればi8型からBigUintまで何でも動作するようになる
https://play.rust-lang.org/?edition=2021&gist=929f3df48db39182558dfad6fe8d1cda
さらに今回はfrom_fn()利用をそのままsuccessors()利用へ変換できるので見やすくなる
fn fibonacci_iter<T: Zero + One + CheckedAdd>() -> impl Iterator<Item = T> {
let mut oq = Some(T::one());
iter::successors(Some(T::zero()), move |p| {
let q = oq.take()?;
oq = q.checked_add(p);
Some(q)
})
}
ちなみにCloneを要求しないためBigIntなどでも無駄なコスト増とならない
>>202
そのコードは暗黙のコピーが発生している
from_fn()使用版のコードはcurrがキャプチャ変数なので「let n = curr?;」でコピー発生
successors()使用版のコードはクロージャ引数「|&curr: &usize|」の「&」でコピー発生
usizeならば問題はないがBigIntなどでそのコードは動かないので劣る
296デフォルトの名無しさん
2022/05/23(月) 19:52:54.51ID:aUQlcplw 暗黙のコピー発生って気にするべき?
!Copyならコンパイルエラーになるしこれまで気にしたことなかった
あとcurrはmoveでキャプチャされるからcurr?で発生するのはmove(とそれに伴うmemcpy)だけど、moveのコストも気にすべき?
!Copyならコンパイルエラーになるしこれまで気にしたことなかった
あとcurrはmoveでキャプチャされるからcurr?で発生するのはmove(とそれに伴うmemcpy)だけど、moveのコストも気にすべき?
297デフォルトの名無しさん
2022/05/23(月) 20:00:24.28ID:pMTVA02Y >>296
それは逆
そのキャプチャされた変数はクロージャが呼ばれるたびに何度も使われる
つまりムーブされてはいけない、つまりムーブ禁止となる
したがって n = curr? で currの中身は nへムーブされずコピーとなる
それは逆
そのキャプチャされた変数はクロージャが呼ばれるたびに何度も使われる
つまりムーブされてはいけない、つまりムーブ禁止となる
したがって n = curr? で currの中身は nへムーブされずコピーとなる
298デフォルトの名無しさん
2022/05/23(月) 20:11:34.97ID:aUQlcplw299デフォルトの名無しさん
2022/05/23(月) 20:12:20.25ID:PbQSFqOo300デフォルトの名無しさん
2022/05/23(月) 20:19:20.85ID:aUQlcplw301デフォルトの名無しさん
2022/05/23(月) 20:27:05.01ID:PbQSFqOo302デフォルトの名無しさん
2022/05/23(月) 20:43:27.72ID:4RywOifH >>295
自分のレスに他人のふりしてレスするキチガイ汚コーダーこと複オジさんちぃーすっ
自分のレスに他人のふりしてレスするキチガイ汚コーダーこと複オジさんちぃーすっ
303デフォルトの名無しさん
2022/05/23(月) 20:49:26.67ID:iRCkPDCQ304デフォルトの名無しさん
2022/05/23(月) 21:10:50.44ID:aUQlcplw305デフォルトの名無しさん
2022/05/23(月) 21:18:12.89ID:gtDJ5U8B https://www.reddit.com/r/rust/comments/3wubj0/comment/cxzlvt4/
num_traitsによるジェネリクスは絶対の正解ではないから適当なところで諦めようね
num_traitsによるジェネリクスは絶対の正解ではないから適当なところで諦めようね
306デフォルトの名無しさん
2022/05/23(月) 21:23:42.08ID:iRCkPDCQ307デフォルトの名無しさん
2022/05/23(月) 21:33:03.23ID:9psioJ1p >>296
コピーもmoveも同じでそれがボトルネックかどうかが重要
数値プリミティブの場合はコピーを他の方法に変えたところでボトルネックが解消されることはまずないから気にする必要はない
BigUint前提ならVecと同じでmoveやクローンやのオーバーヘッドはそれなりに気にした方がいい
逆に現実的にはオーバーフロー考慮する必要がなくなるからCheckedAddが余計なオーバーヘッドになる
特性の違う物をジェネリック等でまとめたほうがいい場面なのかそれぞれ別の実装を用意したほうがいい場面なのか判断できることが大事
コピーもmoveも同じでそれがボトルネックかどうかが重要
数値プリミティブの場合はコピーを他の方法に変えたところでボトルネックが解消されることはまずないから気にする必要はない
BigUint前提ならVecと同じでmoveやクローンやのオーバーヘッドはそれなりに気にした方がいい
逆に現実的にはオーバーフロー考慮する必要がなくなるからCheckedAddが余計なオーバーヘッドになる
特性の違う物をジェネリック等でまとめたほうがいい場面なのかそれぞれ別の実装を用意したほうがいい場面なのか判断できることが大事
308デフォルトの名無しさん
2022/05/23(月) 21:43:43.53ID:Ayvhc9bp >>307
それは間違ってるぜ
BigUintのchecked_add()は常にSomeを返すためにチェックとSomeは消えてオーバーヘッドとならない
さらにRustのジェネリックは各型にmonomorphizationされるためジェネリックで書いてもプリミティブ型やBigUint型のコードはそれぞれに最適化される
それは間違ってるぜ
BigUintのchecked_add()は常にSomeを返すためにチェックとSomeは消えてオーバーヘッドとならない
さらにRustのジェネリックは各型にmonomorphizationされるためジェネリックで書いてもプリミティブ型やBigUint型のコードはそれぞれに最適化される
309デフォルトの名無しさん
2022/05/23(月) 22:04:52.01ID:gtDJ5U8B ヒント:
Ratio<T> where T: Integer + Clone + CheckedAdd + CheckedMulは>>295の条件を満たす
Ratio<T> where T: Integer + Clone + CheckedAdd + CheckedMulは>>295の条件を満たす
310デフォルトの名無しさん
2022/05/23(月) 22:25:54.83ID:xQdLaNrd fibonacci_iter::<Ratio<u8>>()すると
ちゃんと最後233で止まるのね
ジェネリック凄い
ちゃんと最後233で止まるのね
ジェネリック凄い
311デフォルトの名無しさん
2022/05/23(月) 22:34:47.31ID:gtDJ5U8B ククク……RatioのCheckedAddの実装を見ても果たして同じことが言えるかな
312デフォルトの名無しさん
2022/05/23(月) 22:37:22.49ID:HY9DKb05 汚染が始まった!
313デフォルトの名無しさん
2022/05/23(月) 22:55:06.68ID:GQTw0VDg >>311
たしかにRatioの実装が悪いな
まずAddと同様に
if self.denom == rhs.denom {の分岐をし
そして1の場合は
self.numberとrhs.numberでchecke_addするくらいはしないとな
たしかにRatioの実装が悪いな
まずAddと同様に
if self.denom == rhs.denom {の分岐をし
そして1の場合は
self.numberとrhs.numberでchecke_addするくらいはしないとな
314デフォルトの名無しさん
2022/05/23(月) 23:14:26.50ID:bbzZFnmN ジェネリックに書いてもRatio専用コードを書いても
どちらもRatioの実装を使わざるをえないのだから同じ結果となる
そしてRatio専用コードを書こうとしても外部からは工夫のしようがないため
ジェネリックからコンパイル時にモノモーフィゼーションされるコードと全く同じになる
どちらもRatioの実装を使わざるをえないのだから同じ結果となる
そしてRatio専用コードを書こうとしても外部からは工夫のしようがないため
ジェネリックからコンパイル時にモノモーフィゼーションされるコードと全く同じになる
315デフォルトの名無しさん
2022/05/23(月) 23:46:45.42ID:lhQpV8J5 このスレごちゃごちゃした書き込み多すぎ
316デフォルトの名無しさん
2022/05/24(火) 00:53:51.91ID:PPYrRT7r 各型を個別に確認しないと良いか悪いか判断できないならジェネリックにしちゃだめでしょ
317デフォルトの名無しさん
2022/05/24(火) 01:46:13.03ID:Y7WsYtba318デフォルトの名無しさん
2022/05/24(火) 07:59:54.71ID:fUfb5k5z >>307
>特性の違う物をジェネリック等でまとめたほうがいい場面なのかそれぞれ別の実装を用意したほうがいい場面なのか判断できることが大事
禿同だわ
コードパズルやってるやつにいつも感じる違和感の原因はこれだな
こういう能力って何て言うんだろ?
>特性の違う物をジェネリック等でまとめたほうがいい場面なのかそれぞれ別の実装を用意したほうがいい場面なのか判断できることが大事
禿同だわ
コードパズルやってるやつにいつも感じる違和感の原因はこれだな
こういう能力って何て言うんだろ?
319デフォルトの名無しさん
2022/05/24(火) 08:06:11.71ID:eTAydD0N320デフォルトの名無しさん
2022/05/24(火) 08:45:23.72ID:ie6AbIfB 男の人って気持ち悪い…
どうして少女をそんなに汚したがるの?
お母さんに悪いとわおもわないの?
どうして少女をそんなに汚したがるの?
お母さんに悪いとわおもわないの?
321デフォルトの名無しさん
2022/05/24(火) 08:52:13.15ID:anVhILE8322デフォルトの名無しさん
2022/05/24(火) 11:37:27.58ID:0VHIsXBI KISS原則だろ
323デフォルトの名無しさん
2022/05/24(火) 19:12:35.28ID:VR6742Ui324デフォルトの名無しさん
2022/05/24(火) 22:16:43.51ID:oAG0OLUi prev, currの状態管理だとcurrの値をprevに代入するのと戻り値として使うのと2箇所に必要になるからね
curr, nextで管理すればいい
curr, nextで管理すればいい
325デフォルトの名無しさん
2022/05/24(火) 22:24:27.19ID:LZzc/1GO■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 【ATP】テニス総合実況スレ2025 Part 211【WTA】
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 肴は炙った〰イカでいい〰って歌あるじゃん?
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
