公式
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の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 part12
https://mevius.5ch.net/test/read.cgi/tech/1629813327/
探検
Rust part13
■ このスレッドは過去ログ倉庫に格納されています
2021/11/07(日) 10:04:59.35ID:pJhT3MIE
339デフォルトの名無しさん
2021/12/20(月) 05:50:08.07ID:MpI5dMic340デフォルトの名無しさん
2021/12/20(月) 11:31:40.46ID:vxPhPqzv >>335
構造化の基本を学びましょう
構造化の基本を学びましょう
341デフォルトの名無しさん
2021/12/20(月) 18:38:24.90ID:+mZvzmRI どちらのコードも正解
342デフォルトの名無しさん
2021/12/20(月) 18:57:17.41ID:rubGoZ9q コードに「間違い」はあっても「正解」はない
343デフォルトの名無しさん
2021/12/20(月) 19:04:29.92ID:MpI5dMic 間違っているコードは出ていないような
問題視してる人は具体的に何を問題にしているの?
問題視してる人は具体的に何を問題にしているの?
344デフォルトの名無しさん
2021/12/20(月) 20:55:59.37ID:lwZpjeWf アスぺ思考はこれだから
345デフォルトの名無しさん
2021/12/21(火) 11:25:19.41ID:TTfv6HaA https://doc.rust-jp.rs/book-ja/ch18-03-pattern-syntax.html#%E3%83%9E%E3%83%83%E3%83%81%E3%82%AC%E3%83%BC%E3%83%89%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%AE%E6%9D%A1%E4%BB%B6%E5%BC%8F
ここの最後のところに
パターンと関わるマッチガードの優先度は、以下のように振る舞います:
(4 | 5 | 6) if y => ...
以下のようにではありません:
4 | 5 | (6 if y) => ...
とあるんですが、後者のようになってほしい場合は4|5と6 if yを別々に書くしか無いですか?
ここの最後のところに
パターンと関わるマッチガードの優先度は、以下のように振る舞います:
(4 | 5 | 6) if y => ...
以下のようにではありません:
4 | 5 | (6 if y) => ...
とあるんですが、後者のようになってほしい場合は4|5と6 if yを別々に書くしか無いですか?
346デフォルトの名無しさん
2021/12/21(火) 11:56:47.99ID:BV9oeByN >>345
ガード構文がこう「『Pattern』 if 『Expression』」なのでそうなりますね
ガード構文がこう「『Pattern』 if 『Expression』」なのでそうなりますね
347デフォルトの名無しさん
2021/12/22(水) 20:44:35.79ID:7pEHjDF/ sixtyfpsってどう?
348デフォルトの名無しさん
2021/12/22(水) 22:58:00.27ID:mfli1g17 > しかし競プロでみんなproconioとかいう謎の専用ライブラリ使ってるの見た目悪すぎて笑える
いや、ほぼ公認のクレートなんだが・・・
謎の専用ライブラリとかいってる時点で、お察しか?
あと、見た目悪いってどういうことなんかね
includeしたら見た目悪すぎなわけ?
いや、ほぼ公認のクレートなんだが・・・
謎の専用ライブラリとかいってる時点で、お察しか?
あと、見た目悪いってどういうことなんかね
includeしたら見た目悪すぎなわけ?
349デフォルトの名無しさん
2021/12/22(水) 23:53:48.10ID:Wk3NOZd2 Rust bookの以下の記述について質問です
https://doc.rust-jp.rs/book-ja/ch19-05-advanced-functions-and-closures.html#クロージャを返却する
> 以下のコードは、クロージャを直接返そうとしていますが、コンパイルできません:
>
> fn returns_closure() -> Fn(i32) -> i32 {
> |x| x + 1
> }
> コンパイラには、クロージャを格納するのに必要なスペースがどれくらいかわからないのです。
> この問題の解決策は先ほど見かけました。
>
> fn returns_closure() -> Box<Fn(i32) -> i32> {
> Box::new(|x| x + 1)
> }
とBox化しなさいと書かれているのですが
以下のようにimplを付けるとBoxを使わなくてもコンパイルが通り動きました
fn make_closure_add1() -> impl Fn(i32) -> i32 {
|x| x + 1
}
このimpl付加は暗に自動的にBox化されているということなのでしょうか?
https://doc.rust-jp.rs/book-ja/ch19-05-advanced-functions-and-closures.html#クロージャを返却する
> 以下のコードは、クロージャを直接返そうとしていますが、コンパイルできません:
>
> fn returns_closure() -> Fn(i32) -> i32 {
> |x| x + 1
> }
> コンパイラには、クロージャを格納するのに必要なスペースがどれくらいかわからないのです。
> この問題の解決策は先ほど見かけました。
>
> fn returns_closure() -> Box<Fn(i32) -> i32> {
> Box::new(|x| x + 1)
> }
とBox化しなさいと書かれているのですが
以下のようにimplを付けるとBoxを使わなくてもコンパイルが通り動きました
fn make_closure_add1() -> impl Fn(i32) -> i32 {
|x| x + 1
}
このimpl付加は暗に自動的にBox化されているということなのでしょうか?
350デフォルトの名無しさん
2021/12/23(木) 00:23:38.98ID:p+r9sE2/351デフォルトの名無しさん
2021/12/23(木) 07:21:11.33ID:esNMmzKz >>348
そりゃあcratesio に上がったものは空っぽでもゴミでも全部公認だわなw
そりゃあcratesio に上がったものは空っぽでもゴミでも全部公認だわなw
352デフォルトの名無しさん
2021/12/23(木) 15:17:54.33ID:BEeWZFks >>342
逆だ、コードは常に「正解」で動いていて「間違い」ない。
あんたの書いたバグもコンピューターにとっては一部の隙もなく正解であり、書かれたその通りに動き、無慈悲である。
同じ目的で、多数、あるいは二人の人が書いたコードで違いが出るのは「表現の違い」であり「間違い」と決めつける
のは人間の主観や嗜好でしかなく、仮にコードへ正誤を求めるなら明確に表現できていなればならず、矛盾が生じる
逆だ、コードは常に「正解」で動いていて「間違い」ない。
あんたの書いたバグもコンピューターにとっては一部の隙もなく正解であり、書かれたその通りに動き、無慈悲である。
同じ目的で、多数、あるいは二人の人が書いたコードで違いが出るのは「表現の違い」であり「間違い」と決めつける
のは人間の主観や嗜好でしかなく、仮にコードへ正誤を求めるなら明確に表現できていなればならず、矛盾が生じる
353デフォルトの名無しさん
2021/12/23(木) 15:32:21.87ID:GoKXBRn5 コンパイルが通らないコードも正解なのかい?
354デフォルトの名無しさん
2021/12/23(木) 15:39:30.16ID:9VjYa60R えらいポエミーやな
355デフォルトの名無しさん
2021/12/23(木) 18:55:13.24ID:TD851Muu ”動いていて”と言っているからコンパイルは通ってる前提だろう、”コードへ正誤を求める”といっているから
仮にコンパイルが通らないコードは明確にそれ(誤り・間違い)が表現できている
ポエミーなのはその通りだろう
仮にコンパイルが通らないコードは明確にそれ(誤り・間違い)が表現できている
ポエミーなのはその通りだろう
356デフォルトの名無しさん
2021/12/23(木) 21:22:53.78ID:NwYcCv97 >>349
Boxとはヒープを使うということです
Rustではコードで明示的に指定しない限り勝手にヒープが使われることはないです
(もちろんBox以外にもVecやStringなどヒープを使うものを使ってもそれは明示的に指定したことになります)
その Box<Fn(i32) -> i32> は今は Box<dyn Fn(i32) -> i32> と書く必要があります
では本題の impl Fn(i32) -> i32 と書いた場合はどうなるのでしょうか?
以下のように3種類のクロージャを作ってサイズや型を表示させてみると
fn main() {
let direct_closure = |x: i32| x + 1;
let impl_closure = make_impl_closure();
let box_closure = make_box_closure();
println!("{} {}", std::mem::size_of_val(&direct_closure), type_of(&direct_closure));
println!("{} {}", std::mem::size_of_val(&impl_closure), type_of(&impl_closure));
println!("{} {}", std::mem::size_of_val(&box_closure), type_of(&box_closure));
}
fn make_impl_closure() -> impl Fn(i32) -> i32 {
|x| x + 1
}
fn make_box_closure() -> Box<dyn Fn(i32) -> i32> {
Box::new(|x| x + 1)
}
fn type_of<T>(_: &T) -> &'static str {
std::any::type_name::<T>()
}
実行結果は以下のように表示されます
0 tmp::main::{{closure}}
0 tmp::make_impl_closure::{{closure}}
16 alloc::boxed::Box<dyn core::ops::function::Fn<(i32,)>+Output = i32>
つまりimplでは直接クロージャ指定したのと全く同じです
(上記では定義した関数名だけが異なる)
Boxとはヒープを使うということです
Rustではコードで明示的に指定しない限り勝手にヒープが使われることはないです
(もちろんBox以外にもVecやStringなどヒープを使うものを使ってもそれは明示的に指定したことになります)
その Box<Fn(i32) -> i32> は今は Box<dyn Fn(i32) -> i32> と書く必要があります
では本題の impl Fn(i32) -> i32 と書いた場合はどうなるのでしょうか?
以下のように3種類のクロージャを作ってサイズや型を表示させてみると
fn main() {
let direct_closure = |x: i32| x + 1;
let impl_closure = make_impl_closure();
let box_closure = make_box_closure();
println!("{} {}", std::mem::size_of_val(&direct_closure), type_of(&direct_closure));
println!("{} {}", std::mem::size_of_val(&impl_closure), type_of(&impl_closure));
println!("{} {}", std::mem::size_of_val(&box_closure), type_of(&box_closure));
}
fn make_impl_closure() -> impl Fn(i32) -> i32 {
|x| x + 1
}
fn make_box_closure() -> Box<dyn Fn(i32) -> i32> {
Box::new(|x| x + 1)
}
fn type_of<T>(_: &T) -> &'static str {
std::any::type_name::<T>()
}
実行結果は以下のように表示されます
0 tmp::main::{{closure}}
0 tmp::make_impl_closure::{{closure}}
16 alloc::boxed::Box<dyn core::ops::function::Fn<(i32,)>+Output = i32>
つまりimplでは直接クロージャ指定したのと全く同じです
(上記では定義した関数名だけが異なる)
357デフォルトの名無しさん
2021/12/23(木) 21:33:09.04ID:soQwByyI 今日はポエマー多いなw
358デフォルトの名無しさん
2021/12/23(木) 22:34:57.88ID:NwYcCv97 では常に impl を使えばよいのかというと
以下のような条件によって異なるクロージャを返す時
ここで Box を使わず impl Fn(i32) -> i32 にしようとすると
2つのクロージャの型が違うとコンパイラに怒られます
fn make_closure(curry: Option<i32>) -> Box<dyn Fn(i32) -> i32> {
if let Some(curry) = curry {
Box::new(move |x| x + curry)
} else {
Box::new(|x| x + 1)
}
}
結局クロージャでない場合と同じ話で
同じトレイトでも型が異なるものが同居する時にBox化します
>>349のRust bookの例はBox化が不要なケースでBox化だから混乱しますね
以下のような条件によって異なるクロージャを返す時
ここで Box を使わず impl Fn(i32) -> i32 にしようとすると
2つのクロージャの型が違うとコンパイラに怒られます
fn make_closure(curry: Option<i32>) -> Box<dyn Fn(i32) -> i32> {
if let Some(curry) = curry {
Box::new(move |x| x + curry)
} else {
Box::new(|x| x + 1)
}
}
結局クロージャでない場合と同じ話で
同じトレイトでも型が異なるものが同居する時にBox化します
>>349のRust bookの例はBox化が不要なケースでBox化だから混乱しますね
359デフォルトの名無しさん
2021/12/24(金) 11:53:17.86ID:8qqh3vKr コンパイル通ってれば全て正解とかバカ丸出し。
厳密な定義でも使えない定義があるってことすら理解してなさそう。
厳密な定義でも使えない定義があるってことすら理解してなさそう。
360デフォルトの名無しさん
2021/12/24(金) 12:05:46.49ID:0hdsBqvb 型安全だったらコンパイル通れば実行時エラーにならないという点で全て正解っていうのは別に間違ってないと思うけど?
これにケチつけるのは流石にどうかと
これにケチつけるのは流石にどうかと
361デフォルトの名無しさん
2021/12/24(金) 12:44:01.96ID:2tHLRFeD バカ丸出しにお前バカだろとわざわさ言うのもバカなんじゃなかろうか
362デフォルトの名無しさん
2021/12/24(金) 15:42:15.21ID:8qqh3vKr >>360
実行時エラーにならないなんて最低限のところだっつーの。だからバカだっていうんだよ。
実行時エラーにならないなんて最低限のところだっつーの。だからバカだっていうんだよ。
363デフォルトの名無しさん
2021/12/24(金) 16:05:46.66ID:GD01KKAb もしかしてrustはlinuxに取り込まれるわけねーだろって言い張っていた人?
予言外していたよね。お疲れ様です。
予言外していたよね。お疲れ様です。
364デフォルトの名無しさん
2021/12/24(金) 16:08:19.93ID:7q1GmIfa365デフォルトの名無しさん
2021/12/24(金) 16:10:39.10ID:GD01KKAb なんか草
366デフォルトの名無しさん
2021/12/24(金) 16:20:12.59ID:GD01KKAb 25 デフォルトの名無しさん sage 2021/04/27(火) 08:00:23.09 ID:/+bIFNU8
>>23
あのね。。書けばそうなるってものじゃなくてそれを実装しなきゃならんのよ。。
コンパイラにそういったコンテクストを判断させるのがめちゃくちゃ難しいっていってるでしょ?
なんでそんなに読み取れないの?
27 デフォルトの名無しさん sage 2021/04/27(火) 16:10:45.63 ID:/+bIFNU8
>>26
だからそのコードじゃpanic捉えきれねーからカーネルに入れるわけねーだろって
言ってんじゃん。。何読んでんだよ。
28 デフォルトの名無しさん sage 2021/04/27(火) 18:23:48.67 ID:n/AWrch2
まあ半年後どうなるかで誰が正しかったかは分かるわな
29 デフォルトの名無しさん sage 2021/04/27(火) 20:32:29.92 ID:/+bIFNU8
半年も経たなくてももうわかってるっつーの。。だからちゃんと英語の勉強しましょうね。
完全に同一人物だよね
>>23
あのね。。書けばそうなるってものじゃなくてそれを実装しなきゃならんのよ。。
コンパイラにそういったコンテクストを判断させるのがめちゃくちゃ難しいっていってるでしょ?
なんでそんなに読み取れないの?
27 デフォルトの名無しさん sage 2021/04/27(火) 16:10:45.63 ID:/+bIFNU8
>>26
だからそのコードじゃpanic捉えきれねーからカーネルに入れるわけねーだろって
言ってんじゃん。。何読んでんだよ。
28 デフォルトの名無しさん sage 2021/04/27(火) 18:23:48.67 ID:n/AWrch2
まあ半年後どうなるかで誰が正しかったかは分かるわな
29 デフォルトの名無しさん sage 2021/04/27(火) 20:32:29.92 ID:/+bIFNU8
半年も経たなくてももうわかってるっつーの。。だからちゃんと英語の勉強しましょうね。
完全に同一人物だよね
367デフォルトの名無しさん
2021/12/24(金) 16:26:02.78ID:GD01KKAb368デフォルトの名無しさん
2021/12/24(金) 16:31:02.04ID:GD01KKAb 予想が完全に外れたID:8qqh3vKrを晒し上げ♪♪♪
ここまで簡単な予想を外すとかバカ過ぎて生きていけなさそうwww
馬鹿丸出しですねwwwwww
ここまで簡単な予想を外すとかバカ過ぎて生きていけなさそうwww
馬鹿丸出しですねwwwwww
369デフォルトの名無しさん
2021/12/24(金) 16:40:31.03ID:8qqh3vKr 素でバカなんだな。。もうコンパイル通ったんで俺の仕事終わりとか現場で言ってろよ。。話にもならん。
370デフォルトの名無しさん
2021/12/24(金) 16:42:14.31ID:/xk3NPni371デフォルトの名無しさん
2021/12/24(金) 16:45:16.93ID:/xk3NPni372デフォルトの名無しさん
2021/12/24(金) 16:46:19.44ID:/xk3NPni >>369
同一人物だってことはバレバレだっつーの。バカ丸出し。wwwwwwwwww
同一人物だってことはバレバレだっつーの。バカ丸出し。wwwwwwwwww
373デフォルトの名無しさん
2021/12/24(金) 17:12:05.04ID:jmk0MHfo どうでもええわRustの話しろ
374デフォルトの名無しさん
2021/12/24(金) 17:38:56.03ID:8qNIErj3 厳密な定義でも使えない定義?Rustに特定条件下でCのような未定義になる動作あったっけ?
375デフォルトの名無しさん
2021/12/24(金) 18:41:11.93ID:759ZBatD スレの文脈はしらんけど、
Rustではunsafeを使ってなければコンパイラが、未定義動作が起きないということや、データ競合がないことを保証をしてくれるよ
Rustではunsafeを使ってなければコンパイラが、未定義動作が起きないということや、データ競合がないことを保証をしてくれるよ
376デフォルトの名無しさん
2021/12/24(金) 19:10:24.57ID:/xk3NPni >>369
予言外れましたよね?wwwwwwww
予言外れましたよね?wwwwwwww
377デフォルトの名無しさん
2021/12/25(土) 15:28:33.08ID:lsYj53Mi Rustでフロントエンドしてる奴おる?
378デフォルトの名無しさん
2021/12/26(日) 12:56:45.57ID:NwCcamJz Rustの勉強を昨日から開始した。後は構造体とかかな。
379デフォルトの名無しさん
2021/12/26(日) 17:26:13.09ID:rNqv+UWs コード貼ったら糞だボケだゴミだと自称上級者に罵倒されるから注意しろ
380デフォルトの名無しさん
2021/12/26(日) 19:27:36.42ID:IL2U4vJU Rustはこう謳っている
>なぜRustか?
>パフォーマンス
>信頼性
>生産性
真っ向から反するコードを貼ってりゃゴミ・クソ言われて当然なんだよなぁ
>なぜRustか?
>パフォーマンス
>信頼性
>生産性
真っ向から反するコードを貼ってりゃゴミ・クソ言われて当然なんだよなぁ
381デフォルトの名無しさん
2021/12/26(日) 19:29:23.79ID:Haex5ds9 すまんが、配列に入った数値の平均ってパッと出せないもんなの?
他言語でふにゃふにゃになった俺の頭でコードを書いたら、桁の溢れとか精度とか酷えことになりそう・・・・
他言語でふにゃふにゃになった俺の頭でコードを書いたら、桁の溢れとか精度とか酷えことになりそう・・・・
382デフォルトの名無しさん
2021/12/26(日) 20:24:04.94ID:s+fXV5dW コードもゴミだったがそれ以上に考え方がゴミだったからな
383デフォルトの名無しさん
2021/12/26(日) 20:42:21.32ID:M+F+5/6j384デフォルトの名無しさん
2021/12/26(日) 22:30:25.75ID:L9HJqboW >>381
普通に平均を求めるだけではダメなのでしょうか?
fn main() {
assert_eq!(5.5, (1..=10).average());
assert_eq!(6.8, [2.3, 8.7, 9.4].average());
}
use num::ToPrimitive;
trait Average {
fn average(self) -> f64;
}
impl<I> Average for I
where I: IntoIterator, <I as IntoIterator>::Item: ToPrimitive,
{
fn average(self: I) -> f64 {
self.into_iter().fold((0.0, 1.0), |(ave, size), n| (ave + (n.to_f64().unwrap() - ave) / size, size + 1.0)).0
}
}
普通に平均を求めるだけではダメなのでしょうか?
fn main() {
assert_eq!(5.5, (1..=10).average());
assert_eq!(6.8, [2.3, 8.7, 9.4].average());
}
use num::ToPrimitive;
trait Average {
fn average(self) -> f64;
}
impl<I> Average for I
where I: IntoIterator, <I as IntoIterator>::Item: ToPrimitive,
{
fn average(self: I) -> f64 {
self.into_iter().fold((0.0, 1.0), |(ave, size), n| (ave + (n.to_f64().unwrap() - ave) / size, size + 1.0)).0
}
}
385デフォルトの名無しさん
2021/12/27(月) 00:09:24.17ID:wxukv015 カハンの加算アルゴリズムというのがある
386デフォルトの名無しさん
2021/12/27(月) 09:11:03.63ID:9DXmjbrK 汚コードキタ━!
387デフォルトの名無しさん
2021/12/27(月) 10:50:10.93ID:BFpPIAiX 何でもトレイト化するアホ
388デフォルトの名無しさん
2021/12/27(月) 12:29:15.17ID:PxL7gTAR ゴミをゴミだといって何が悪い!
389デフォルトの名無しさん
2021/12/27(月) 12:32:52.22ID:OyINMfYQ ここの人たちってplaygroundとかなんで完全に動かせるコードで提示しないんだろ・・・?
アドバイス貰うにも回答するにも一生懸命スペース全角置換したり、まじ両方キモイw
trait Averagewwwww
アドバイス貰うにも回答するにも一生懸命スペース全角置換したり、まじ両方キモイw
trait Averagewwwww
390デフォルトの名無しさん
2021/12/27(月) 13:09:28.61ID:PX/mZ8bI こう言う時って普通の関数にしちゃいかんの?
391デフォルトの名無しさん
2021/12/27(月) 14:19:38.18ID:Btn3kp2t 普通の関数にすべきかどうかはメソッドチェーンにしたいかどうかで判断すればよろしい
392デフォルトの名無しさん
2021/12/27(月) 14:43:10.42ID:0vghZEjd393デフォルトの名無しさん
2021/12/27(月) 15:03:42.29ID:6JVZDUUj394デフォルトの名無しさん
2021/12/27(月) 21:04:27.03ID:K3JIQJJi しょうがない、一応は専門家が書いているであろう他言語の実装を参考にしよう・・・・
https://source.dot.net/#System.Linq/System/Linq/Average.cs,2b4701af991d5425
俺様、信頼して使っていたメソッドの衝撃の事実を知る
https://source.dot.net/#System.Linq/System/Linq/Average.cs,2b4701af991d5425
俺様、信頼して使っていたメソッドの衝撃の事実を知る
395デフォルトの名無しさん
2021/12/27(月) 21:09:19.15ID:h+0xE8z4 浮動小数点型ならそういう素直な実装で十分だよ
396デフォルトの名無しさん
2021/12/27(月) 21:53:06.04ID:N7w3YVE+ >>384
それだと桁溢れは防止できているが誤差蓄積の対処ができていない
もう一つパラメタを増やしてこうしたほうがいい
fn average(self: I) -> f64 {
self.into_iter().fold((0.0, 1.0, 0.0), |(ave, size, fix), n| {
let diff = (n.to_f64().unwrap() - ave) / size - fix;
let new_ave = ave + diff;
(new_ave, size + 1.0, (new_ave - ave) - diff)
}).0
}
>>387
イテレータメソッド化するにはそのためのtrait宣言が必須
もしわからないならitertoolsなどのイテレータ拡張ライブラリを見よう
>>389
標準ライブラリのsum()がtrait Sumを使っているからtrait Averageでもまあいいとは思う
ただし今回はイテレータメソッド拡張のみに用いているようだからtrait IteratorExtなどの命名がわかりやすいとは思う
それだと桁溢れは防止できているが誤差蓄積の対処ができていない
もう一つパラメタを増やしてこうしたほうがいい
fn average(self: I) -> f64 {
self.into_iter().fold((0.0, 1.0, 0.0), |(ave, size, fix), n| {
let diff = (n.to_f64().unwrap() - ave) / size - fix;
let new_ave = ave + diff;
(new_ave, size + 1.0, (new_ave - ave) - diff)
}).0
}
>>387
イテレータメソッド化するにはそのためのtrait宣言が必須
もしわからないならitertoolsなどのイテレータ拡張ライブラリを見よう
>>389
標準ライブラリのsum()がtrait Sumを使っているからtrait Averageでもまあいいとは思う
ただし今回はイテレータメソッド拡張のみに用いているようだからtrait IteratorExtなどの命名がわかりやすいとは思う
397デフォルトの名無しさん
2021/12/27(月) 21:56:50.25ID:20E7BwbM IteratorExt大草原、まじに入院してほしいw
398デフォルトの名無しさん
2021/12/27(月) 22:01:57.73ID:6/3kWl6D イテレータメソッドにする必要ある?
399デフォルトの名無しさん
2021/12/27(月) 22:15:24.91ID:N7w3YVE+ >>398
標準ライブラリにおいてsum()やproduct()
それを一般化したfold()やreduce()
さらにmax()やmin()など当然イテレータメソッドになっている
むしろ今回のaverage()だけをイテレータメソッドにしない理由が見当たらない
標準ライブラリにおいてsum()やproduct()
それを一般化したfold()やreduce()
さらにmax()やmin()など当然イテレータメソッドになっている
むしろ今回のaverage()だけをイテレータメソッドにしない理由が見当たらない
400デフォルトの名無しさん
2021/12/27(月) 22:20:18.56ID:6/3kWl6D >>399
じゃあなんで標準ライブラリにないの?
じゃあなんで標準ライブラリにないの?
401デフォルトの名無しさん
2021/12/27(月) 22:25:16.01ID:h+0xE8z4 カハンの加算使ったのか
402デフォルトの名無しさん
2021/12/27(月) 22:31:56.63ID:/o/Y1bP3 >>400
入力型と出力型で大量の組み合わせ(例:i32→f32)が用途に応じて要求されるのと
単純に合計をサイズで割った平均でよい用途もあれば
件数が多いと合計がオーバーフローするからその対策が欲しい用途もあれば
桁が大きく異なるデータ列の場合に浮動小数点の誤差改善が欲しい用途など多岐にわたる
だから平均を標準ライブラリで何か一つ用意は無理
入力型と出力型で大量の組み合わせ(例:i32→f32)が用途に応じて要求されるのと
単純に合計をサイズで割った平均でよい用途もあれば
件数が多いと合計がオーバーフローするからその対策が欲しい用途もあれば
桁が大きく異なるデータ列の場合に浮動小数点の誤差改善が欲しい用途など多岐にわたる
だから平均を標準ライブラリで何か一つ用意は無理
403デフォルトの名無しさん
2021/12/27(月) 22:51:58.74ID:Btn3kp2t 単にこれまで標準ライブラリに入れようとした人がいなかったか
そういう人はいたが必要性を説得できなかっただけでしょう
sumやproductに比べるとユースケース限られるしね
そういう人はいたが必要性を説得できなかっただけでしょう
sumやproductに比べるとユースケース限られるしね
404デフォルトの名無しさん
2021/12/27(月) 23:21:10.48ID:iNGO9QKv "ave"のせいで頭に入ってこない
405デフォルトの名無しさん
2021/12/28(火) 00:10:56.21ID:THzUMFur 「件数が多いと合計がオーバーフローするからその対策が欲しい用途」そんな考えがオカシイ
sumですらオーバーフローに言及しているだけで対策が欲しいから、だからstdじゃないという理由では無い
https://doc.rust-lang.org/std/iter/trait.Iterator.html#panics-3
When calling sum() and a primitive integer type is being returned, this method will panic if the computation overflows and debug assertions are enabled.
必要性を説得出来ないだけというのが正しい。浮動小数の加減算による誤差蓄積だって、浮動小数を扱うなら当然起こることだが
誤差改善が欲しい用途があるからstdじゃないとか嘘ばっかり言わないで?おまえさ、迷惑だからRust辞めてくれよ?
最小限、分かったふりで糞まき散らすな?
sumですらオーバーフローに言及しているだけで対策が欲しいから、だからstdじゃないという理由では無い
https://doc.rust-lang.org/std/iter/trait.Iterator.html#panics-3
When calling sum() and a primitive integer type is being returned, this method will panic if the computation overflows and debug assertions are enabled.
必要性を説得出来ないだけというのが正しい。浮動小数の加減算による誤差蓄積だって、浮動小数を扱うなら当然起こることだが
誤差改善が欲しい用途があるからstdじゃないとか嘘ばっかり言わないで?おまえさ、迷惑だからRust辞めてくれよ?
最小限、分かったふりで糞まき散らすな?
406デフォルトの名無しさん
2021/12/28(火) 00:45:10.69ID:vzPVHyZI407デフォルトの名無しさん
2021/12/28(火) 00:52:41.14ID:We8KhoPF408デフォルトの名無しさん
2021/12/28(火) 01:20:29.34ID:vzPVHyZI409デフォルトの名無しさん
2021/12/28(火) 01:57:17.15ID:We8KhoPF410デフォルトの名無しさん
2021/12/28(火) 02:00:22.76ID:We8KhoPF411デフォルトの名無しさん
2021/12/28(火) 02:37:31.31ID:vzPVHyZI 多数あり外部で十分派なのでそこは興味ない
sortは2種類しかなく2種類とも標準ライブラリでサポートしている
sortは2種類しかなく2種類とも標準ライブラリでサポートしている
412デフォルトの名無しさん
2021/12/28(火) 09:30:51.41ID:y5zg5Cpt >>411
じゃ一番メジャーな外部ライブラリを教えてよ
じゃ一番メジャーな外部ライブラリを教えてよ
413デフォルトの名無しさん
2021/12/28(火) 10:24:44.25ID:ZpntEDp9 外部で十分と言えば、cratesは先着順で名前取れるからこの先優良ライブラリ程クソみたいな名前になっていくよね
414デフォルトの名無しさん
2021/12/28(火) 10:41:12.74ID:zga8SsrA415デフォルトの名無しさん
2021/12/28(火) 11:15:50.74ID:ZpntEDp9 ライブラリの永続性を保つのに名前でマッチさせるのやめてUUIDかハッシュか何かでマッチさせれば良かったのにみたいな気持ちはある
416デフォルトの名無しさん
2021/12/28(火) 11:32:06.72ID:HJMjm+0C >>414
横から失礼。
個人的にはそもそもcrate.io に頼るのがあまり好きでないなと。
Rust に限らない話だけど、こういった中央集権的なリポジトリを用意すること自体が名前争奪戦の元になるのではないかなと。
それぞれのWEBサイトで勝手に配布すればいいのにってね。
バージョン管理方法の方法論なんかも関わるから簡単な事ではないんだろうけど。
横から失礼。
個人的にはそもそもcrate.io に頼るのがあまり好きでないなと。
Rust に限らない話だけど、こういった中央集権的なリポジトリを用意すること自体が名前争奪戦の元になるのではないかなと。
それぞれのWEBサイトで勝手に配布すればいいのにってね。
バージョン管理方法の方法論なんかも関わるから簡単な事ではないんだろうけど。
417デフォルトの名無しさん
2021/12/28(火) 11:35:30.26ID:QBGkL4gv 現状でもGitHubから直接落としてくることも出来るけど、GotHubのリポジトリは消せてしまうからな
418デフォルトの名無しさん
2021/12/28(火) 13:40:51.12ID:XD/wAJcN cargo updateでマイナーバージョンアップやらせるのも規約決めたり工夫ご必要だし
専用のリポジトリ用意する方がわかりやすくはあるような
crates.io以外にも複数のリポジトリを混在して使えるようにできれば良いのかな
専用のリポジトリ用意する方がわかりやすくはあるような
crates.io以外にも複数のリポジトリを混在して使えるようにできれば良いのかな
419デフォルトの名無しさん
2021/12/28(火) 14:10:43.98ID:Qs/YVt0a cargoはどこからでも落とせる
crates.ioなみに安全性、信頼性、永続性が確保できるんなら好きにすればいい
crates.ioなみに安全性、信頼性、永続性が確保できるんなら好きにすればいい
420デフォルトの名無しさん
2021/12/28(火) 14:45:21.34ID:ZpntEDp9 永続性を謳うサービスで名前で管理したらそりゃあいい名前の取り合いになるよなあ
421デフォルトの名無しさん
2021/12/28(火) 14:48:37.23ID:XD/wAJcN422デフォルトの名無しさん
2021/12/28(火) 15:16:22.59ID:c9bIiubz GoみたいにGithubがデファクトスタンダードなレジストリになっても一覧性の面で不便だし、crates.ioでいいと思うけどなあ
423デフォルトの名無しさん
2021/12/28(火) 21:31:42.32ID:VUBOa1a1 セキュリティ監査付きのcrates.ioクローンが欲しい
424デフォルトの名無しさん
2021/12/28(火) 21:33:45.43ID:m5VlhgmG average()が気になってcratesだかcargoだか話逸らしに聞こえる
425デフォルトの名無しさん
2021/12/28(火) 22:07:01.63ID:a7HoB6QX ぼぼぼ、ぼくちんのために誰か優秀なaverage()をおながいします
426デフォルトの名無しさん
2021/12/28(火) 22:22:38.58ID:ndrZKvgW >>423
cargo auditでは足りない?
cargo auditでは足りない?
427デフォルトの名無しさん
2022/01/01(土) 09:34:17.63ID:f7mn356m428デフォルトの名無しさん
2022/01/01(土) 19:34:25.31ID:u2SyaqDt Why is my Rust build so slow?
429デフォルトの名無しさん
2022/01/01(土) 20:01:31.38ID:YfLqYQwV Because your PC is poor spec.
430デフォルトの名無しさん
2022/01/01(土) 23:44:42.88ID:193tzZ58 https://fasterthanli.me/articles/why-is-my-rust-build-so-slow
この人の場合クソデカ型のせいでコンパイルが遅かったという話
この人の場合クソデカ型のせいでコンパイルが遅かったという話
431デフォルトの名無しさん
2022/01/02(日) 10:42:43.84ID:adsjh4PJ warpがクソみたいに重いって書いてるな
432デフォルトの名無しさん
2022/01/02(日) 11:21:24.79ID:ulXuEZX0 sccacheとか入れてみるか
433デフォルトの名無しさん
2022/01/02(日) 13:52:17.06ID:o9R7ffl7 当日お急ぎ便でSSDを買った
434デフォルトの名無しさん
2022/01/02(日) 14:41:20.14ID:N3sGBcjr >>432
bin crateのビルドに時間かかるなら sccache は効果薄いのでは
bin crateのビルドに時間かかるなら sccache は効果薄いのでは
435デフォルトの名無しさん
2022/01/02(日) 14:53:21.62ID:3FXnOBLq 高度IT人材、富士通は最大年収3500万円へ
「富士通年収3500万!」日本のIT企業の年収も、高額化してきました
AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ
【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材
来年度から副業解禁 人材多様化へ―大同生命次期社長
第一生命HD、副業解禁 約1万5000人対象
第一生命HD、副業解禁 1万5000人対象―大手生保初
IHI、国内8000人の副業解禁 重厚長大企業も転機
IHI、社外兼業を解禁 社内副業もルール化
「富士通年収3500万!」日本のIT企業の年収も、高額化してきました
AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ
【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材
来年度から副業解禁 人材多様化へ―大同生命次期社長
第一生命HD、副業解禁 約1万5000人対象
第一生命HD、副業解禁 1万5000人対象―大手生保初
IHI、国内8000人の副業解禁 重厚長大企業も転機
IHI、社外兼業を解禁 社内副業もルール化
436デフォルトの名無しさん
2022/01/02(日) 21:56:13.39ID:Uu3cvt4h 効率を求め過ぎてモノリシックになりすぎると様々なコストが上昇してしまう
そこで分割
さらに内部もcrate分割で並行コンパイル
そこで分割
さらに内部もcrate分割で並行コンパイル
437デフォルトの名無しさん
2022/01/04(火) 02:27:09.98ID:L+p8nbVX Rustでノードが追加されたり消されたりする双方向グラフ扱いたくなったらどうするんだろ
Arenaじゃ追加削除してるうちにゴミがメモリ圧迫していくし
Arenaじゃ追加削除してるうちにゴミがメモリ圧迫していくし
438デフォルトの名無しさん
2022/01/04(火) 09:43:25.00ID:aGnbM+4r >>437
Cursor使う
Arenaの場合はfree list用意して削除済み要素を再利用すればよい
Arenaが埋まったらreallocするのではなく同じサイズの新たなArenaを獲得していくようにすれば
不要になったArenaから解放できるからmalloc使う場合と同等のメモリ使用量に抑えられるかと
これでも不足するなら copy GC 的に compaction するしかなさそう
Cursor使う
Arenaの場合はfree list用意して削除済み要素を再利用すればよい
Arenaが埋まったらreallocするのではなく同じサイズの新たなArenaを獲得していくようにすれば
不要になったArenaから解放できるからmalloc使う場合と同等のメモリ使用量に抑えられるかと
これでも不足するなら copy GC 的に compaction するしかなさそう
439デフォルトの名無しさん
2022/01/04(火) 18:15:54.62ID:L+p8nbVX >>438
なるほど…… 結構ガッツリ実装しなきゃいけなそうね。ありがとう。最後はGCを実装することになりそうなので、それならいい感じのGCを残しておいてくれたら良かったのにって気になるな
なるほど…… 結構ガッツリ実装しなきゃいけなそうね。ありがとう。最後はGCを実装することになりそうなので、それならいい感じのGCを残しておいてくれたら良かったのにって気になるな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★12 [BFU★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★3 [蚤の市★]
- 中国・国連大使「日本側は反省せず、発言の撤回拒否」 書簡を国連事務総長に送る [♪♪♪★]
- 高市政権の経済環境、アベノミクスと対極 インフレ・円安・金利上昇 [蚤の市★]
- 【NHK】受信料の未払い督促を10倍に強化… 支払い拒否が続くと民事手続きも 「カーナビも受信料いただきます」方針 [冬月記者★]
- 【野球】「地上波で放送しないWBC」は2軍選手中心で十分! 今こそネットフリックスに『ノー』を突き付けてほしい 江本氏が提言 [冬月記者★]
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap600
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1807
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap599
- とらせん IP
- 福島競馬3回5日目
- こいせん 全レス転載禁止
- 俺(中国)「さあて、次は何を制裁してやろうかな」。ネトウヨを一方的にボコれるターン到来 [805596214]
- 【速報】高市、ヨハネスブルグに到着! [219241683]
- 小野田大臣「それ正式なデータですか?報道ベースですよね」(10万いいね) [237216734]
- 習近平、高市早苗にブチギレ [931948549]
- このお寿司カキフライセットに1000円出せますか?
- 日本人がよくやる「誤解を招いた」という発言、中国語ではあなたが間違っているという意味で翻訳されますます火に油を注いでる模様 [709039863]
