公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※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/
※次スレは原則>>980が立てること
前スレ
Rust part24
https://mevius.5ch.net/test/read.cgi/tech/1716759686/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part25
■ このスレッドは過去ログ倉庫に格納されています
2024/07/31(水) 00:46:26.17ID:DBMWY2QT
2024/07/31(水) 00:47:02.26ID:DBMWY2QT
Rust The Book (日本語版)
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
2024/07/31(水) 00:47:20.93ID:DBMWY2QT
Rust Reference Book
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust serde Book
https://serde.rs/
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust serde Book
https://serde.rs/
2024/08/01(木) 16:24:10.41ID:x8y3t2qM
>>1
乙
乙
2024/08/01(木) 18:56:40.59ID:pdiRiMAP
2024/08/01(木) 23:55:38.74ID:GRWphbaC
「The Rust Foundation」は、人命や財産に関わるような安全性が決定的に重要になるシステムのために、
Rust言語を責任を持ってサポートするためのコンソーシアム「Safety-Critical Rust Consortium」の設立を発表しました。
設立には日本からWoven by Toyotaが参加
Rust言語を責任を持ってサポートするためのコンソーシアム「Safety-Critical Rust Consortium」の設立を発表しました。
設立には日本からWoven by Toyotaが参加
2024/08/03(土) 23:20:11.39ID:Ir85kifm
今日調べたけど、RustでVecを拡張するときのサイズは前の2倍
JavaとRubyは1.5倍
Pythonはややこしくて約112.5%
Goはまず2倍だけど要素数が256を超えたら1.25倍におさえる
Rustはメモリ大目に使いがちかも
JavaとRubyは1.5倍
Pythonはややこしくて約112.5%
Goはまず2倍だけど要素数が256を超えたら1.25倍におさえる
Rustはメモリ大目に使いがちかも
2024/08/03(土) 23:47:40.31ID:b8/nS+s7
Note that the exponential growth is important.
On each reallocation, we have to copy twice as much, but then it takes twice as long to fill up again.
These factors cancel out and we get (on average) constant-time .push().
On each reallocation, we have to copy twice as much, but then it takes twice as long to fill up again.
These factors cancel out and we get (on average) constant-time .push().
2024/08/04(日) 09:23:44.30ID:smF75lRu
>>7
そのレートを利用者側で調整出来れば最強だった
そのレートを利用者側で調整出来れば最強だった
2024/08/04(日) 12:21:30.93ID:65IaeFum
要らない
設定できてしまうと、測定もせずに小さなレートを設定してかえって遅くなるか、
神経質な人やチームなら必要もないのにいちいち測定する羽目になって生産性爆下がりするかの二択になる
本当に調整する価値のある状況ならちゃんと測定して決めるはずだし、その手間に比べたら自前で適宜リサイズするくらい全く問題にならない手間だろう
設定できてしまうと、測定もせずに小さなレートを設定してかえって遅くなるか、
神経質な人やチームなら必要もないのにいちいち測定する羽目になって生産性爆下がりするかの二択になる
本当に調整する価値のある状況ならちゃんと測定して決めるはずだし、その手間に比べたら自前で適宜リサイズするくらい全く問題にならない手間だろう
2024/08/04(日) 12:26:21.94ID:gacpQS9v
>>7
それらGC言語は言語によってはメモリ管理上で仕方ない場合もあるのかもしれないが
C++やRustでは全く問題がないように作られているためパフォーマンスの良い2倍にしている
重要な点はキャパシティを2倍にしても実メモリ割り当ては2倍の消費をせずにその後ベクタを使用した長さ分だけに限られること
それらGC言語は言語によってはメモリ管理上で仕方ない場合もあるのかもしれないが
C++やRustでは全く問題がないように作られているためパフォーマンスの良い2倍にしている
重要な点はキャパシティを2倍にしても実メモリ割り当ては2倍の消費をせずにその後ベクタを使用した長さ分だけに限られること
2024/08/04(日) 12:30:08.75ID:65IaeFum
んなわけあるかい
いつのまにか勝手に他に割り当てられたらキャパシティの意味ないでしょ
いつのまにか勝手に他に割り当てられたらキャパシティの意味ないでしょ
2024/08/04(日) 12:37:16.12ID:gacpQS9v
>>12
実メモリ割り当てと仮想メモリ割り当ての違いを学ぼう
C++でもRustでもベクタのキャパ内の未使用エリアにアクセスしない
そのため未使用分の実メモリ割り当ては発生せずメモリ使用量の問題が起きない
実メモリ割り当てと仮想メモリ割り当ての違いを学ぼう
C++でもRustでもベクタのキャパ内の未使用エリアにアクセスしない
そのため未使用分の実メモリ割り当ては発生せずメモリ使用量の問題が起きない
2024/08/04(日) 13:05:57.09ID:+t3m9FIs
まーた複オジの嘘がはじまったね
2024/08/04(日) 14:52:31.44ID:EnndQ4ap
ユーザ空間の話してるときにカーネルの話混ぜないでよ
16デフォルトの名無しさん
2024/08/04(日) 15:19:59.12ID:ao1w9dwD 仮想メモリと実メモリの話はそもそもGoやJavaやRubyでも同じだろ
「他の言語では必ず実メモリから取られるから物理メモリ以上の量のデータを確保できない、だからこれらの言語では動的配列の確保を2倍よりも小さい値ずつにしている」とでも言いたいのか?
「他の言語では必ず実メモリから取られるから物理メモリ以上の量のデータを確保できない、だからこれらの言語では動的配列の確保を2倍よりも小さい値ずつにしている」とでも言いたいのか?
2024/08/04(日) 16:16:53.81ID:HF9mGFi1
2倍にしていけば累積コピー回数を平均1回台に抑えられるメリットがあって
これは1+2+4+8+...+2^(n-2)+2^(n-1)=2^n-1で累積と同じになるからで
そのためC++(gccやclang)やRustは2倍を採用している状況
別問題として
2倍にしていくのはメモリがもったいなくね?があるけど
OSの仮想メモリ管理により実際に使われるまでは実メモリが使われることはないのでだいじょうぶ
さらに自らv.reserve(size)とサイズを指定する手段も用意されていて
size以下の間はお引っ越しコピーを避けることができるので見積もれる時は推奨だよ
これは1+2+4+8+...+2^(n-2)+2^(n-1)=2^n-1で累積と同じになるからで
そのためC++(gccやclang)やRustは2倍を採用している状況
別問題として
2倍にしていくのはメモリがもったいなくね?があるけど
OSの仮想メモリ管理により実際に使われるまでは実メモリが使われることはないのでだいじょうぶ
さらに自らv.reserve(size)とサイズを指定する手段も用意されていて
size以下の間はお引っ越しコピーを避けることができるので見積もれる時は推奨だよ
18デフォルトの名無しさん
2024/08/04(日) 17:23:30.18ID:ku/HSe0h reallocationなんてパフォーマンス落ちるだけだし
with_capacityで自分でコントロールした方が良いと思う
with_capacityで自分でコントロールした方が良いと思う
19デフォルトの名無しさん
2024/08/04(日) 17:51:55.81ID:tbuKemgK2024/08/04(日) 18:11:52.52ID:mDDM97lI
大きなサイズに育っていくならコピー回数が少なくなる毎回2倍が有利
仮想メモリが足りるか足りないかの限界状況で用いるならwith_capacity()やreserve()を最初から用いる
仮想メモリが足りるか足りないかの限界状況で用いるならwith_capacity()やreserve()を最初から用いる
2024/08/04(日) 18:28:12.58ID:mhkxn3lF
フラグメンテーションの問題とかもあるから教科書通りの2倍固定よりも
Goのようにサイズが大きくなるにつれGrowth Factorも小さくしていくモデルのほうが一般的には良さそうだね
Goのようにサイズが大きくなるにつれGrowth Factorも小さくしていくモデルのほうが一般的には良さそうだね
2024/08/04(日) 18:43:06.42ID:YKxthOUq
gccでもclangでもC++のvectorは2倍にしていくから
これはRustの話ではなくて
2倍にしていくのが好ましいという長年の確立された知見が存在しているんだよ
これはRustの話ではなくて
2倍にしていくのが好ましいという長年の確立された知見が存在しているんだよ
2024/08/04(日) 18:44:03.04ID:YKxthOUq
一方でガベージコレクション依存言語は内部のメモリ管理方式が全く異なるから
各言語個別の事情があるかもしれないけどこのスレの話題ではないね
各言語個別の事情があるかもしれないけどこのスレの話題ではないね
2024/08/04(日) 19:01:06.46ID:S53R2Qhs
>>16
それらの言語は仮想メモリを持たない環境のことも考慮しての増加率なんだろうな
それらの言語は仮想メモリを持たない環境のことも考慮しての増加率なんだろうな
2024/08/04(日) 19:12:09.84ID:gh5gXoAa
仮想メモリを持たない環境でGC言語www
2024/08/04(日) 19:40:14.37ID:EnndQ4ap
思い込みの激しい人だこと
27デフォルトの名無しさん
2024/08/04(日) 19:41:13.70ID:ao1w9dwD Vecのアロケート戦略なんて標準ライブラリの実装レベルの話でしかないし、言語の特徴や優劣のような話でもないだろ
GoやJavaが2倍でも、逆にRustがより小さい値だったとしても、GCの有無とかの話に比べればずっと些細な話でしかないし
マジでなにいってるんだこいつとしか思えない
GoやJavaが2倍でも、逆にRustがより小さい値だったとしても、GCの有無とかの話に比べればずっと些細な話でしかないし
マジでなにいってるんだこいつとしか思えない
2024/08/04(日) 19:48:10.28ID:S53R2Qhs
2024/08/04(日) 20:16:30.17ID:5nFDNjd2
この議論
元々メモリ無駄食いのGC依存言語は無視してよくて、
Rustと同じジャンルのC++で長年議論されてきて2倍という結論が出ている。
どうしても2倍を批判したいならまずはgccやclangのC++に対して行なうとよいかと。
元々メモリ無駄食いのGC依存言語は無視してよくて、
Rustと同じジャンルのC++で長年議論されてきて2倍という結論が出ている。
どうしても2倍を批判したいならまずはgccやclangのC++に対して行なうとよいかと。
30デフォルトの名無しさん
2024/08/04(日) 20:31:51.43ID:ao1w9dwD 2倍に対して突っ込んでるんじゃなくて延々と的外れなことを書いてることに対して突っ込まれてるだけでは?
平均的なコピー回数が少ない点で2倍は妥当ではあるけど、それも「よく使われる方法」くらいの意味しかない
C++でもMSVCだと1.5倍だったと思うし (今のバージョンでもそうかは未確認)
平均的なコピー回数が少ない点で2倍は妥当ではあるけど、それも「よく使われる方法」くらいの意味しかない
C++でもMSVCだと1.5倍だったと思うし (今のバージョンでもそうかは未確認)
2024/08/04(日) 22:06:56.31ID:H9q8xh4E
>>21
Goがなぜそんなやり方をしているのか
実行しながら実メモリ使用量の変化を傍らでウォッチして見た
Goの大きなsliceでcapacityが増える時に実メモリ使用量が急激に増える
C++やRustではcapacityが増えてもそんな変動は起きない
つまりGoはこの問題のため2倍ではなく1.25倍にせざるをえないと思われる
Goがなぜそんなやり方をしているのか
実行しながら実メモリ使用量の変化を傍らでウォッチして見た
Goの大きなsliceでcapacityが増える時に実メモリ使用量が急激に増える
C++やRustではcapacityが増えてもそんな変動は起きない
つまりGoはこの問題のため2倍ではなく1.25倍にせざるをえないと思われる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- フランス「G7に習近平主席を呼びたい」ドイツ「良い考えだ」 高市さん...? [237216734]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】中国営業に熱心な日本人タレントたち、中国のイベントが続々と中止に… まだ予定中のアイドルとか歌手とかたくさんいるけど [452836546]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 生活保護ぼく、お金がない😨
