Rust part13

■ このスレッドは過去ログ倉庫に格納されています
2021/11/07(日) 10:04:59.35ID:pJhT3MIE
公式
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/
2021/12/19(日) 22:05:50.34ID:1R2jF/rb
例えば>>321がif式を5行に分割しているが
それもrustfmtにより1行に修正された

Rust標準ライブラリのソースでもワンライナー
bool.rs: if self { Some(t) } else { None }
result.rs: let n = if self.inner.is_some() { 1 } else { 0 };
time.rs: let prefix = if f.sign_plus() { "+" } else { "" };

>>328
では何の話かね?
2021/12/19(日) 22:37:44.04ID:D79ys1jH
構造と書式を区別できんのはヤバイで
2021/12/19(日) 23:10:30.41ID:ZhiL7Huf
心底どうでもいい。
保守性に貢献するどころかマイナスになるようなクソプライドコードの導入すんなよ。
2021/12/19(日) 23:14:48.39ID:4jRnwXL4
また性懲りもなくコードべたべた書いてんのか
2021/12/19(日) 23:21:45.51ID:cDs+Q4pL
rustfmtだから書式の話やで
2021/12/19(日) 23:25:17.24ID:/BRS7QS/
区別できなかったからrustfmtを持ち出したんやろ
どこに改行入れるべきかって話だと思ったんだろなww
2021/12/19(日) 23:41:46.15ID:1R2jF/rb
rustfmtを持ち出したのは俺じゃないぜ
あと今回のケースならここは分割するよな
let reader = BufReader::new(stdin());
let line = reader.lines().next().unwrap().unwrap();
let is_even = line.split(' ').any(|s| s.parse::<isize>().unwrap() & 1 == 0);
2021/12/19(日) 23:48:52.91ID:m2ZvKw+8
汚コード
2021/12/19(日) 23:59:56.43ID:cDs+Q4pL
問題文が>>314でこうなってるから
>> | 入力は以下の形式で標準入力から数値が与えられる。
>> | a b c d e

if let [a, b, c, d, e] = line
 .splitn(5, ' ')
 .map(|s| s.parse::<isize>().unwrap())
 .collect::<ArrayVec<_, 5>>()[..] {

あとこれでいい
let is_even = a & b & c & d & e & 1 == 0;
2021/12/20(月) 05:23:59.31ID:XPDM+Al+
そういえばいつの間にか
let variable = 3;
println!("{variable}");
みたいな書き方が出来るんだけどこれ前からだっけ?
2021/12/20(月) 05:50:08.07ID:MpI5dMic
>>338
それはまだnightlyだけですよ
来月の1.58からstableになって使えるようになる予定
2021/12/20(月) 11:31:40.46ID:vxPhPqzv
>>335
構造化の基本を学びましょう
2021/12/20(月) 18:38:24.90ID:+mZvzmRI
どちらのコードも正解
2021/12/20(月) 18:57:17.41ID:rubGoZ9q
コードに「間違い」はあっても「正解」はない
2021/12/20(月) 19:04:29.92ID:MpI5dMic
間違っているコードは出ていないような
問題視してる人は具体的に何を問題にしているの?
2021/12/20(月) 20:55:59.37ID:lwZpjeWf
アスぺ思考はこれだから
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を別々に書くしか無いですか?
2021/12/21(火) 11:56:47.99ID:BV9oeByN
>>345
ガード構文がこう「『Pattern』 if 『Expression』」なのでそうなりますね
2021/12/22(水) 20:44:35.79ID:7pEHjDF/
sixtyfpsってどう?
2021/12/22(水) 22:58:00.27ID:mfli1g17
> しかし競プロでみんなproconioとかいう謎の専用ライブラリ使ってるの見た目悪すぎて笑える
いや、ほぼ公認のクレートなんだが・・・
謎の専用ライブラリとかいってる時点で、お察しか?

あと、見た目悪いってどういうことなんかね
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化されているということなのでしょうか?
2021/12/23(木) 00:23:38.98ID:p+r9sE2/
ここを読む
https://doc.rust-lang.org/book/ch19-05-advanced-functions-and-closures.html#returning-closures
2021/12/23(木) 07:21:11.33ID:esNMmzKz
>>348
そりゃあcratesio に上がったものは空っぽでもゴミでも全部公認だわなw
2021/12/23(木) 15:17:54.33ID:BEeWZFks
>>342
逆だ、コードは常に「正解」で動いていて「間違い」ない。

あんたの書いたバグもコンピューターにとっては一部の隙もなく正解であり、書かれたその通りに動き、無慈悲である。
同じ目的で、多数、あるいは二人の人が書いたコードで違いが出るのは「表現の違い」であり「間違い」と決めつける
のは人間の主観や嗜好でしかなく、仮にコードへ正誤を求めるなら明確に表現できていなればならず、矛盾が生じる
2021/12/23(木) 15:32:21.87ID:GoKXBRn5
コンパイルが通らないコードも正解なのかい?
2021/12/23(木) 15:39:30.16ID:9VjYa60R
えらいポエミーやな
2021/12/23(木) 18:55:13.24ID:TD851Muu
”動いていて”と言っているからコンパイルは通ってる前提だろう、”コードへ正誤を求める”といっているから
仮にコンパイルが通らないコードは明確にそれ(誤り・間違い)が表現できている
ポエミーなのはその通りだろう
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では直接クロージャ指定したのと全く同じです
(上記では定義した関数名だけが異なる)
2021/12/23(木) 21:33:09.04ID:soQwByyI
今日はポエマー多いなw
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化だから混乱しますね
2021/12/24(金) 11:53:17.86ID:8qqh3vKr
コンパイル通ってれば全て正解とかバカ丸出し。
厳密な定義でも使えない定義があるってことすら理解してなさそう。
360デフォルトの名無しさん
垢版 |
2021/12/24(金) 12:05:46.49ID:0hdsBqvb
型安全だったらコンパイル通れば実行時エラーにならないという点で全て正解っていうのは別に間違ってないと思うけど?
これにケチつけるのは流石にどうかと
2021/12/24(金) 12:44:01.96ID:2tHLRFeD
バカ丸出しにお前バカだろとわざわさ言うのもバカなんじゃなかろうか
2021/12/24(金) 15:42:15.21ID:8qqh3vKr
>>360
実行時エラーにならないなんて最低限のところだっつーの。だからバカだっていうんだよ。
363デフォルトの名無しさん
垢版 |
2021/12/24(金) 16:05:46.66ID:GD01KKAb
もしかしてrustはlinuxに取り込まれるわけねーだろって言い張っていた人?
予言外していたよね。お疲れ様です。
2021/12/24(金) 16:08:19.93ID:7q1GmIfa
バカをスルーできないバカっているよねー

>>364
お前の事な
365デフォルトの名無しさん
垢版 |
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
半年も経たなくてももうわかってるっつーの。。だからちゃんと英語の勉強しましょうね。

完全に同一人物だよね
367デフォルトの名無しさん
垢版 |
2021/12/24(金) 16:26:02.78ID:GD01KKAb
https://lkml.org/lkml/2021/12/6/461

英語読めんならこれになんて書かれているのかわかるよね?
368デフォルトの名無しさん
垢版 |
2021/12/24(金) 16:31:02.04ID:GD01KKAb
予想が完全に外れたID:8qqh3vKrを晒し上げ♪♪♪
ここまで簡単な予想を外すとかバカ過ぎて生きていけなさそうwww
馬鹿丸出しですねwwwwww
2021/12/24(金) 16:40:31.03ID:8qqh3vKr
素でバカなんだな。。もうコンパイル通ったんで俺の仕事終わりとか現場で言ってろよ。。話にもならん。
370デフォルトの名無しさん
垢版 |
2021/12/24(金) 16:42:14.31ID:/xk3NPni
>>362
最低限の性質を満たしている⇔正解って言ってんじゃん。。何読んでんだよ。
なんでそんなに読み取れないの?
だからバカだっていうんだよ。
だからちゃんと日本語の勉強しましょうね。
371デフォルトの名無しさん
垢版 |
2021/12/24(金) 16:45:16.93ID:/xk3NPni
>>369
なお予言を外したことについては一貫してノータッチwwwww
話をしたくないのは君だよねwwwwww
372デフォルトの名無しさん
垢版 |
2021/12/24(金) 16:46:19.44ID:/xk3NPni
>>369
同一人物だってことはバレバレだっつーの。バカ丸出し。wwwwwwwwww
2021/12/24(金) 17:12:05.04ID:jmk0MHfo
どうでもええわRustの話しろ
2021/12/24(金) 17:38:56.03ID:8qNIErj3
厳密な定義でも使えない定義?Rustに特定条件下でCのような未定義になる動作あったっけ?
2021/12/24(金) 18:41:11.93ID:759ZBatD
スレの文脈はしらんけど、
Rustではunsafeを使ってなければコンパイラが、未定義動作が起きないということや、データ競合がないことを保証をしてくれるよ
376デフォルトの名無しさん
垢版 |
2021/12/24(金) 19:10:24.57ID:/xk3NPni
>>369
予言外れましたよね?wwwwwwww
2021/12/25(土) 15:28:33.08ID:lsYj53Mi
Rustでフロントエンドしてる奴おる?
378デフォルトの名無しさん
垢版 |
2021/12/26(日) 12:56:45.57ID:NwCcamJz
Rustの勉強を昨日から開始した。後は構造体とかかな。
2021/12/26(日) 17:26:13.09ID:rNqv+UWs
コード貼ったら糞だボケだゴミだと自称上級者に罵倒されるから注意しろ
2021/12/26(日) 19:27:36.42ID:IL2U4vJU
Rustはこう謳っている
>なぜRustか?
>パフォーマンス
>信頼性
>生産性
真っ向から反するコードを貼ってりゃゴミ・クソ言われて当然なんだよなぁ
381デフォルトの名無しさん
垢版 |
2021/12/26(日) 19:29:23.79ID:Haex5ds9
すまんが、配列に入った数値の平均ってパッと出せないもんなの?
他言語でふにゃふにゃになった俺の頭でコードを書いたら、桁の溢れとか精度とか酷えことになりそう・・・・
2021/12/26(日) 20:24:04.94ID:s+fXV5dW
コードもゴミだったがそれ以上に考え方がゴミだったからな
2021/12/26(日) 20:42:21.32ID:M+F+5/6j
>>381
これ使ったらよいのでは
https://docs.rs/streaming-stats/0.2.3/stats/fn.mean.html
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
}
}
2021/12/27(月) 00:09:24.17ID:wxukv015
カハンの加算アルゴリズムというのがある
2021/12/27(月) 09:11:03.63ID:9DXmjbrK
汚コードキタ━!
2021/12/27(月) 10:50:10.93ID:BFpPIAiX
何でもトレイト化するアホ
2021/12/27(月) 12:29:15.17ID:PxL7gTAR
ゴミをゴミだといって何が悪い!
389デフォルトの名無しさん
垢版 |
2021/12/27(月) 12:32:52.22ID:OyINMfYQ
ここの人たちってplaygroundとかなんで完全に動かせるコードで提示しないんだろ・・・?
アドバイス貰うにも回答するにも一生懸命スペース全角置換したり、まじ両方キモイw
trait Averagewwwww
2021/12/27(月) 13:09:28.61ID:PX/mZ8bI
こう言う時って普通の関数にしちゃいかんの?
2021/12/27(月) 14:19:38.18ID:Btn3kp2t
普通の関数にすべきかどうかはメソッドチェーンにしたいかどうかで判断すればよろしい
2021/12/27(月) 14:43:10.42ID:0vghZEjd
>>389
playgroundでは自己顕示欲が満たせないんだよw

まあplaygroundでは動かせないコードもあるけどな
2021/12/27(月) 15:03:42.29ID:6JVZDUUj
>>381
こういう子は、移動平均出したくなった時とかどうすんだろ…
愚直に毎回平均出す関数とか使っちゃうわけ?
394デフォルトの名無しさん
垢版 |
2021/12/27(月) 21:04:27.03ID:K3JIQJJi
しょうがない、一応は専門家が書いているであろう他言語の実装を参考にしよう・・・・
https://source.dot.net/#System.Linq/System/Linq/Average.cs,2b4701af991d5425
俺様、信頼して使っていたメソッドの衝撃の事実を知る
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などの命名がわかりやすいとは思う
2021/12/27(月) 21:56:50.25ID:20E7BwbM
IteratorExt大草原、まじに入院してほしいw
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()だけをイテレータメソッドにしない理由が見当たらない
2021/12/27(月) 22:20:18.56ID:6/3kWl6D
>>399
じゃあなんで標準ライブラリにないの?
2021/12/27(月) 22:25:16.01ID:h+0xE8z4
カハンの加算使ったのか
2021/12/27(月) 22:31:56.63ID:/o/Y1bP3
>>400
入力型と出力型で大量の組み合わせ(例:i32→f32)が用途に応じて要求されるのと
単純に合計をサイズで割った平均でよい用途もあれば
件数が多いと合計がオーバーフローするからその対策が欲しい用途もあれば
桁が大きく異なるデータ列の場合に浮動小数点の誤差改善が欲しい用途など多岐にわたる
だから平均を標準ライブラリで何か一つ用意は無理
2021/12/27(月) 22:51:58.74ID:Btn3kp2t
単にこれまで標準ライブラリに入れようとした人がいなかったか
そういう人はいたが必要性を説得できなかっただけでしょう
sumやproductに比べるとユースケース限られるしね
2021/12/27(月) 23:21:10.48ID:iNGO9QKv
"ave"のせいで頭に入ってこない
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辞めてくれよ?
最小限、分かったふりで糞まき散らすな?
2021/12/28(火) 00:45:10.69ID:vzPVHyZI
>>405
それは君が無知
平均算出にはsumを求めずとも差分を逐次的に適用するアルゴリズムがあるoverflowを回避する対策で一般的に使われている
例えば>>383のstatsもその方法で平均を算出している
sumの例を出すのは見当違い
2021/12/28(火) 00:52:41.14ID:We8KhoPF
>>406
アルゴリズムの話じゃなくてstdに入ってない理由の説明がおかしいという指摘だと思うよ
言葉汚いし何言ってるかわかりづらいけど
2021/12/28(火) 01:20:29.34ID:vzPVHyZI
>>407
stdに入ってない理由?
一長一短ある複数のアルゴリズムがあるから外部でいいだろう
2021/12/28(火) 01:57:17.15ID:We8KhoPF
>>408
その理屈だとsortも該当するが
そもそも前提としてaverageをstd
2021/12/28(火) 02:00:22.76ID:We8KhoPF
>>409
途中で書き込んでしまった

そもそもaverageか類似の関数をstdに取り込む議論が過去にあったならそれをポイントしてほしい
2021/12/28(火) 02:37:31.31ID:vzPVHyZI
多数あり外部で十分派なのでそこは興味ない
sortは2種類しかなく2種類とも標準ライブラリでサポートしている
2021/12/28(火) 09:30:51.41ID:y5zg5Cpt
>>411
じゃ一番メジャーな外部ライブラリを教えてよ
413デフォルトの名無しさん
垢版 |
2021/12/28(火) 10:24:44.25ID:ZpntEDp9
外部で十分と言えば、cratesは先着順で名前取れるからこの先優良ライブラリ程クソみたいな名前になっていくよね
2021/12/28(火) 10:41:12.74ID:zga8SsrA
>>413
マジでこれ
いい名前取るだけ取って何年も放置とか多すぎ
なんかいい方法無いかねぇ…
415デフォルトの名無しさん
垢版 |
2021/12/28(火) 11:15:50.74ID:ZpntEDp9
ライブラリの永続性を保つのに名前でマッチさせるのやめてUUIDかハッシュか何かでマッチさせれば良かったのにみたいな気持ちはある
416デフォルトの名無しさん
垢版 |
2021/12/28(火) 11:32:06.72ID:HJMjm+0C
>>414
横から失礼。
個人的にはそもそもcrate.io に頼るのがあまり好きでないなと。
Rust に限らない話だけど、こういった中央集権的なリポジトリを用意すること自体が名前争奪戦の元になるのではないかなと。
それぞれのWEBサイトで勝手に配布すればいいのにってね。
バージョン管理方法の方法論なんかも関わるから簡単な事ではないんだろうけど。
417デフォルトの名無しさん
垢版 |
2021/12/28(火) 11:35:30.26ID:QBGkL4gv
現状でもGitHubから直接落としてくることも出来るけど、GotHubのリポジトリは消せてしまうからな
2021/12/28(火) 13:40:51.12ID:XD/wAJcN
cargo updateでマイナーバージョンアップやらせるのも規約決めたり工夫ご必要だし
専用のリポジトリ用意する方がわかりやすくはあるような
crates.io以外にも複数のリポジトリを混在して使えるようにできれば良いのかな
2021/12/28(火) 14:10:43.98ID:Qs/YVt0a
cargoはどこからでも落とせる
crates.ioなみに安全性、信頼性、永続性が確保できるんなら好きにすればいい
420デフォルトの名無しさん
垢版 |
2021/12/28(火) 14:45:21.34ID:ZpntEDp9
永続性を謳うサービスで名前で管理したらそりゃあいい名前の取り合いになるよなあ
2021/12/28(火) 14:48:37.23ID:XD/wAJcN
>>419
ほんとだ、packageごとにregistry指定できるんだね
https://doc.rust-lang.org/cargo/reference/registries.html
2021/12/28(火) 15:16:22.59ID:c9bIiubz
GoみたいにGithubがデファクトスタンダードなレジストリになっても一覧性の面で不便だし、crates.ioでいいと思うけどなあ
2021/12/28(火) 21:31:42.32ID:VUBOa1a1
セキュリティ監査付きのcrates.ioクローンが欲しい
2021/12/28(火) 21:33:45.43ID:m5VlhgmG
average()が気になってcratesだかcargoだか話逸らしに聞こえる
425デフォルトの名無しさん
垢版 |
2021/12/28(火) 22:07:01.63ID:a7HoB6QX
ぼぼぼ、ぼくちんのために誰か優秀なaverage()をおながいします
2021/12/28(火) 22:22:38.58ID:ndrZKvgW
>>423
cargo auditでは足りない?
2022/01/01(土) 09:34:17.63ID:f7mn356m
>>411
「多数あり外部で十分派」なのに>>412には答えられないの??
2022/01/01(土) 19:34:25.31ID:u2SyaqDt
Why is my Rust build so slow?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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