Rust part18

レス数が900を超えています。1000を超えると表示できなくなるよ。
2022/12/10(土) 18:17:02.61ID:XSNoXTPt
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

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 part17
https://mevius.5ch.net/test/read.cgi/tech/1665063793/
2023/01/09(月) 22:00:04.05ID:ytPnwm3y
ttps://docs.rs/tar/latest/tar/struct.Builder.html#method.append_path
>pub fn append_path<P: AsRef<Path>>(&mut self, path: P) -> Result<()>
>~
>Also note that after all files have been written to an archive the finish function needs to be called to finish writing the archive.
らしいが
>pub fn finish(&mut self) -> Result<()>
>~
>In most situations the into_inner method should be preferred.
どっちなんだよw
ここに載っているサンプルだってinto_innerもfinishも呼んでいないのがあるし
2023/01/09(月) 23:33:14.26ID:2xcnkP4M
>>835
もう解決してそうだけど
let mut c = ...からt.append_path(...)までを別スコープにすれば通らない?
2023/01/10(火) 00:39:55.01ID:j3UGlM4K
>>837
空っぽになるのはtarのinto_innerでfinish経由でwrite_allが呼ばれて
cursorのpositionが末尾になっててio::copy時には書き出すものがないから
2023/01/10(火) 00:49:25.83ID:j3UGlM4K
t.append_pathしたタイミングでcursor.position進んでたわ
そりゃそうか
2023/01/10(火) 01:07:25.76ID:LMu5FpAe
let mut v = Vec::new();
let c = std::io::Cursor::new(&mut v);
let mut t = tar::Builder::new(c);
t.append_path("foo.txt");
t.finish();
drop(t);
std::fs::write("foo.tar", &v);
843デフォルトの名無しさん
垢版 |
2023/01/10(火) 01:15:57.75ID:MfXPDJ7e
get_mutでCursorにすればReaderとして使える
2023/01/10(火) 02:21:46.49ID:UwgiY8HJ
そのコードでCursor使う意味が分からん
let mut tar = tar::Builder::new(Vec::new());
tar.append_path("foo.txt").unwrap();
let body = tar.into_inner().unwrap();
std::fs::write("foo.tar", body).unwrap();
845デフォルトの名無しさん
垢版 |
2023/01/10(火) 03:54:21.65ID:jTn98fgX
昨日のファイル1000個の続きなんじゃね
メモリに全部読読み込んでから処理しようとする理由は謎
2023/01/10(火) 11:07:15.73ID:UY3YN64G
The Bookをやり終えたあとってどうするのがいい?
次に読むべきおすすめの書籍があるか知りたいです!
847デフォルトの名無しさん
垢版 |
2023/01/10(火) 13:00:32.37ID:wZlueyRK
>>846
次の書籍を読む前にThe Bookの復習がてら簡単なCLIツールを3~5個くらい書いて自分の理解を確かめたほうがいいよ
2023/01/10(火) 16:48:39.24ID:UY3YN64G
>>847
アドバイスありがとうございます!
とりあえず何かしら作ってみようと思います
849デフォルトの名無しさん
垢版 |
2023/01/10(火) 17:29:32.58ID:0JcDinm0
コマンドラインに渡した(1000個の)ファイルを
指定した名前のtarファイルに書き出すツールとか
2023/01/10(火) 18:47:02.53ID:jt9UZCSx
>>845
メモリを事前に一括で確保してVecの逐次伸長をなくせば早くなるんじゃね?
と思ったけど実験してみたら全くそんなことはなかった。Rustのメモリアロケータって優秀なんだな・・・
2023/01/10(火) 19:01:05.30ID:ICakwhma
何使ってんのかな
mallocかな
852デフォルトの名無しさん
垢版 |
2023/01/10(火) 21:06:19.40ID:doG42uyJ
10回程度の小さい容量のアロケートなんてI/Oに比べれば微々たるものでしょ
2023/01/11(水) 14:35:14.84ID:PmiCGwmF
Vecのcapacityって再確保のたびに倍々に増えていくんじゃなかったっけ
ならpushの回数を増やしても再確保回数は大した数字にならないだろう
2023/01/11(水) 19:26:52.32ID:STTwcLZn
ドライブレターを割り当ててあるネットワークドライブのパスを
dunce::canonicalizeに食わせるとUNCパスが返ってくる
そりゃねーぜ・・・
855デフォルトの名無しさん
垢版 |
2023/01/11(水) 21:38:38.39ID:+7dhpYN+
こういう瑣末な問題を自分で解決する力のない人はまだRustを使うべき時期じゃないよね
2023/01/11(水) 23:08:05.53ID:STTwcLZn
というかLinuxのProtonだとネットワークドライブへのアクセスでも
ドライブレタースタートのパスが返ってくるのな
結果、Windowsだと動かないけどLinuxなら動くという珍事になってるw
857デフォルトの名無しさん
垢版 |
2023/01/12(木) 09:12:37.07ID:KDs8BtvS
ファイル属性の取得はファイル読み込みよりは圧倒的に速いので
・ファイル名とファイルサイズの取得
・合計サイズのチェックと領域の確保
の順でやればマシかもね
ファイル読み込みに比べたら微々たる違いだとは思うが
858デフォルトの名無しさん
垢版 |
2023/01/12(木) 10:55:41.76ID:YWq2QOJT
ファイルの数だけ二重にsyscallを呼び出すことになるからサイズのデカい数ファイルを処理するときならともかく1000ファイルで合計1MBという今回のケースだと悪化するんじゃね?
2023/01/12(木) 11:13:05.66ID:CILc6G1+
ripgrepの実装でも見た方が早そう
2023/01/12(木) 11:37:44.42ID:Iq4TKL6o
>>858
そもそもトータル1MB程度って分かってるなら余裕みて2MB程度確保しとけば良いような気がするが...
861デフォルトの名無しさん
垢版 |
2023/01/12(木) 12:26:48.24ID:lE5eokgZ
>>859
ripgrepは今回のようにすべてのコンテンツを全て一括でメモリに保持するわけじゃないから
streamingで処理するのでいいなら固定長のバッファ確保してそこを使いながらパイプライン通して結果をI/O出力すればいい

>>860
アロケーションがボトルネックならそういう対処もあるだろうけど十中八九違うんじゃね?
2023/01/12(木) 13:42:55.06ID:xHtWNAJz
は?頭悪いの?
2023/01/12(木) 13:53:22.90ID:Iq4TKL6o
>>861
> アロケーションがボトルネックならそういう対処もあるだろうけど十中八九違うんじゃね?
そんなのはみんなわかっててあーだこーだ言ってるわけだがw
864デフォルトの名無しさん
垢版 |
2023/01/12(木) 15:09:30.20ID:xWF9eQpc
>>863
的外れないことを言ってる自覚があるなら>>860みたいなレスはしないだろ
2023/01/12(木) 15:31:26.43ID:Iq4TKL6o
的外れないことって何?w
2023/01/12(木) 21:08:10.25ID:3O2sN+zP
dunce::canonicalizeはダメっぽいのでGetFullPathNameWを使うことにした
ちょうどいいシステムコールが用意されているなら安易に野良クレートを使うより確実な気がしてきた
2023/01/12(木) 22:10:25.12ID:FSx5+7HP
やっぱC言語の方が良くね?
2023/01/12(木) 22:53:08.57ID:SDdlQMcb
というと ?
2023/01/12(木) 22:57:40.51ID:lSbfdb++
いや、知らんけどw
2023/01/13(金) 20:32:09.46ID:GI5Uh2G8
知らないなら言うなよ
2023/01/13(金) 21:11:06.84ID:DJL02dxD
>>844
のコード見るだけでも、Rustは書き味の悪い言語だと思う。
872デフォルトの名無しさん
垢版 |
2023/01/13(金) 21:13:37.70ID:pWxhpTTY
>>871
悪い見本だもの
2023/01/13(金) 21:16:19.91ID:DJL02dxD
>>872
Rust関連の本を何冊か読んだが良いコードは余り無い。
874デフォルトの名無しさん
垢版 |
2023/01/13(金) 21:19:33.92ID:pWxhpTTY
悪い見本だと判別できない時点でろくな本を読んでないことが分かる
875デフォルトの名無しさん
垢版 |
2023/01/13(金) 21:21:43.63ID:URQHLbI7
みんなの参考になるように読んだ本を列挙してみてはどうだ?
2023/01/13(金) 21:26:26.06ID:DJL02dxD
はっきり言ってやろう。Rustは根本的に書き味が悪いんだよ。
2023/01/13(金) 21:29:15.41ID:3E7mF/VV
Rustは苦痛を感じるためのドM言語ってこと、忘れてないか?
878デフォルトの名無しさん
垢版 |
2023/01/13(金) 21:29:53.28ID:AezcW3Li
>>876
じゃ君が思う根本的に書き味が良い言語は何なの?
2023/01/13(金) 21:35:01.32ID:SIYbgDna
>>878
c
2023/01/13(金) 21:47:38.65ID:fPZtp8ym
ワイはJava
2023/01/13(金) 21:48:28.21ID:fPZtp8ym
Kotlin、C#も好き
2023/01/13(金) 22:05:13.48ID:CrbXPD60
ラクダケース派か
PythonとかRustみたいに型と変数でラクダとヘビ使い分けるパターンって名前あるのかな
2023/01/13(金) 22:18:14.76ID:3Mpi9pMF
C#はたしかに何やるのも楽だ
2023/01/13(金) 22:45:44.13ID:JAZ1vLLw
Rustってそもそもコンパイル速度が遅くてダメだわ
2023/01/13(金) 22:48:50.23ID:KppyFlUz
Goはコンパイル最速だからデオキシスのスピードフォルムだな
Rustはディフィンス、Java/C#はノーマルフォルムだな
アタックフォルムは知らん
2023/01/13(金) 23:27:46.90ID:15Xqxl1r
>>878
C, C++, C#, JS, Ruby, Java は、Rustよりは書き味がいい。
2023/01/14(土) 00:10:54.25ID:+bIIgMNd
自分はスネーク派だからJavaとC#は苦手(根本的に書き味が悪い)
Python使用歴が長かったからだと思う
CとC++は何でもありだからどうでもいいけど
TypeScript(JS)も油断するとスネークで書いてたりする
2023/01/14(土) 00:20:05.26ID:7IKvLHvE
スネークとは関係なく、Rustは書き味が悪い。
他のどんな言語にも無い書きにくさ。
Kotlinも書き味が悪いから没落中。
2023/01/14(土) 02:25:09.71ID:aWsdCtiV
汚コード量産言語
2023/01/14(土) 06:19:32.45ID:si/5TbUH
書き味で言うならNimが一番良い。

特にメソッド呼出し構文はNimが一番洗練されていると思う。UFCSとかもっと色々な言語で採用されてほしい。
2023/01/14(土) 10:19:28.23ID:gaUC4cev
でもnimって流行ってないじゃん?
2023/01/14(土) 10:29:27.36ID:qzxpLg1U
nimの構文とか好きな人は好きだろうと思うけど自分は嫌いだし
嫌いな構文をわざわざ使うほどの他の魅力がないんだよなぁ
2023/01/14(土) 11:26:06.77ID:P3G4Bbh6
書き味悪いとか言ってRust使う気全くないのにわざわざRustスレに書き込もうとするのが一番意味不明
2023/01/14(土) 11:58:15.30ID:2TykacFm
>>893
オレもそう思った
意味不明というかアンチスレあるからそっちでやれよ
って感じ
2023/01/14(土) 12:05:24.38ID:mqrlOfYW
わざわざ文句いいに来るおじさんって大抵構ってちゃん
896デフォルトの名無しさん
垢版 |
2023/01/14(土) 13:50:07.41ID:E6EWdIax
「書き味」の良さ悪さの原因を自分なりに考察して言語化してれば多少は議論になるんだけどな

慣れと好みの次元でしか語れないならお爺ちゃんの自分語りでしかないから相手しても無駄
2023/01/14(土) 14:08:44.00ID:CzVWhO4J
そもそもRustはいろいろ我慢して使う言語だし
みんな上に言われて仕方なく使ってる
2023/01/14(土) 14:09:38.67ID:kogkDCJ2
>>896
そんなことしたら、ずるがしこい人達にアイデア盗まれるだけじゃ。
2023/01/14(土) 14:11:13.60ID:kogkDCJ2
何が良くて何が悪いかを発見すること能力こそ重要なのだから。
2023/01/14(土) 14:33:09.89ID:Yhj3VSAm
>>898
糖質おつ
2023/01/14(土) 14:35:58.49ID:osTmo3zd
コンパイラ安全最強はrust
コンパイラ速度最強はgolang
オブジェクト指向設計最強はjava/c#
汎用最強はc/c++
2023/01/14(土) 14:56:30.09ID:on+CIJwd
殆どの言語は高速化に向けて頑張ってるからGo言語の地位は危ういけど、既存の言語をメモリ安全にするのは大変だからRustは安泰
強みがあるって大事
2023/01/14(土) 15:32:55.40ID:3m59wGPl
もう次世代言語スレ立ててこいよ
904デフォルトの名無しさん
垢版 |
2023/01/14(土) 15:40:05.51ID:4KPPIGP6
また次世代言語スレ(旧世代おじいちゃん隔離スレ)が消えたから溜まり場になってるのか
迷惑な話だな
2023/01/14(土) 15:51:18.61ID:yWcHQYoB
rustが次世代言語、、?まじぃ?
2023/01/14(土) 15:55:26.44ID:HwrORXYU
次世代の言語
https://mevius.5ch.net/test/read.cgi/tech/1571717826/
907デフォルトの名無しさん
垢版 |
2023/01/14(土) 17:40:41.95ID:VmfonobT
>>898
アホだろw

「トマトは不味い、俺はりんごが好き」と同程度の話なのにお前がりんごが美味いと感じる理由を説明したらそのアイデアwとやらがが盗まれると思ってんのかww
908デフォルトの名無しさん
垢版 |
2023/01/14(土) 17:48:38.74ID:7aPbxTVe
>>907
まともにrust使ったことないのがまたバレるから誤魔化してるだけでしょ
2023/01/14(土) 18:06:11.45ID:P3G4Bbh6
アイデアってことは書き味のいい最強のプログラミング言語の開発でもしてるんだろうな
2023/01/14(土) 18:36:28.57ID:9ctkhBjT
仮に、あくまでも仮にプログラミング言語を確実に素晴らしくする案があったとして
その案が盗まれて (他の言語に取り入れられて) なんか損なことがあるのか?
世の中に良いものがひとつ増えればありがたい話。
2023/01/14(土) 19:24:05.22ID:s7HfBvg3
車関連のソフトウェア携わってるやつおる?
今年から急にrustの案件増えてきてね?
しかもすごい金かけてる案件が目白押し
うちは4次請け5次受けくらいの立場だからわからないけどこれってTOYOTAとかホンダとかが大元なのか?
2023/01/14(土) 19:34:43.90ID:F1jWkXvh
勘弁してくれよ、、
Google Chrome、プログラミング言語「Rust」の採用を発表
https://news.mynavi.jp/techplus/article/20230113-2561774/
2023/01/14(土) 20:10:33.53ID:2TykacFm
>>911
>>589

世間知らずもほどがある
2023/01/14(土) 20:48:41.86ID:VNfJPmNM
車載での普及はかなり先では
少なくとも今のE/EではCのままでしょ
2023/01/14(土) 20:53:17.78ID:IboOW/fc
>>912
この流れだとedgeやsafariが追随するのは必至か
2023/01/14(土) 21:32:45.87ID:CLO/QXdT
車つってもエンジン制御とUIじゃ全然違くないか
2023/01/14(土) 22:11:15.42ID:QmsxXkaU
>>915
EdgeはChromiumベースじゃん
918デフォルトの名無しさん
垢版 |
2023/01/14(土) 22:11:45.32ID:d5QpUSFx
>>915
edgeはchromiumだから追随も何も自動的にRust採用
chromeの脆弱性の大半はメモリ関連バグが原因なので自然な流れ
919デフォルトの名無しさん
垢版 |
2023/01/14(土) 22:12:14.30ID:d5QpUSFx
ァー!
920デフォルトの名無しさん
垢版 |
2023/01/15(日) 00:41:50.47ID:ku1I9qUG
>>886
Ruby入れんなバカ
921デフォルトの名無しさん
垢版 |
2023/01/15(日) 00:54:56.50ID:ku1I9qUG
>>911
俺もそんぐらいの商流だけど、話は増えてる。

>>914,916
今の車はエンジンやナビ以外も色々電子制御してるんだわ。
んでもって今まさに売るもんじゃなくて、ン年先に出るかもしれないモデルの話。
C/C++のテスト工数がばかんなんないんだわ。
2023/01/15(日) 02:51:25.95ID:KkfkCmPm
Rustは自動車などの人命に関わる部分では人気が高まっていると。
人命に関わるからめんどくさくても仕方が無いと。
2023/01/15(日) 02:56:27.53ID:lfgB9E3M
その話が事実ならルネサスからRustの開発環境が提供されるのも
時間の問題ってこと?(もしくは一部にはすでに提供されている?)
現状組み込み用だとCortex-MやRISC-V用の野良コンパイラと
vscodeあたりを組み合わせるしかないわけだし
2023/01/15(日) 07:17:19.37ID:Fhl5jlzy
ソニー・ホンダのAFEELAとかどうなんだろ?
Rustとか使ってるのかね。


ソニー・ホンダも志向、自動車の「走るスマホ化」
https://toyokeizai.net/articles/-/644484?page=2
ソニー・ホンダモビリティの河野拓・デザイン&ブランド戦略部ゼネラルマネジャーは、AFEELAを「iPhoneにタイヤがついたようなもの」と例える。
2023/01/15(日) 09:01:34.83ID:FWMLffRf
>>921
>>922
914です。ADやゾーンE/Eに向けて採用されていくのは同意。演算能力はマイコンというよりPC

エンジン、ブレーキ、ステアECU等々のマイコン使った従来E/EのECUは人命に関わっていたとしてもCのままだと思うよ
モデルベースでRustのコード生成なんて聞いたことないし
2023/01/15(日) 10:33:03.49ID:xEBlbsta
書き味ってのはオブジェクト指向し易いかどうかってこと?
2023/01/15(日) 11:04:25.61ID:iBpPXbBA
>>924
> ソニー・ホンダモビリティの河野拓・デザイン&ブランド戦略部ゼネラルマネジャーは、AFEELAを「iPhoneにタイヤがついたようなもの」と例える。
そう言うのはECUとか知らない一般向けの宣伝文句だよ
928デフォルトの名無しさん
垢版 |
2023/01/15(日) 11:33:45.74ID:Veh5XioV
命に関わるようなところを4次請け5次請けに出してんの!?
日本マジ終わってんなww
2023/01/15(日) 12:56:35.95ID:XPwcoEw+
>>928
いまさらすぎる
2023/01/15(日) 13:28:39.34ID:9tzHaMX4
仕様書通りにできててテストに合格すればどこに出してもいいでしょ
孫請け以降禁止する契約もあるけど
931デフォルトの名無しさん
垢版 |
2023/01/15(日) 15:27:38.76ID:L+UeRXU0
>>930
言い訳ないだろw
戦略的にも品質的にも生産性的にもあり得ない

仕様書通りにできててテストに合格してればいいという理由でGoogleが自動運転技術の命に関わるような開発を4次請け5次請けに出すと思うか?
シートベルトやエアバッグ作るのとはわけが違うんだよ
2023/01/15(日) 16:08:55.48ID:9tzHaMX4
>>931
だから不安なら禁止すればいいと書いた
2023/01/15(日) 16:09:46.14ID:dEFl4tMA
>>931
GoogleはGoogleの付加価値を提供するために自分たちでやっているだけでしょ
車とそのシステムを作るカーメーカーやTier1が自分でソフト書かなくても品質保証できていれば問題ない。付加価値はそこじゃないから
時代は変わってきてるけどね
2023/01/15(日) 16:13:07.64ID:9tzHaMX4
Rustは メモリ関連のバグが減るからどんだけ下請けに出しても
大丈夫な言語でしょw
935デフォルトの名無しさん
垢版 |
2023/01/15(日) 16:19:04.91ID:kf65JyLn
>>933
そんな考えだから
トヨタですらコードがスパゲッティすぎるという理由で安全性を疑問視され訴訟で負けたりするんだぞ

ソフトウェアというものへの理解が足りない
2023/01/15(日) 16:20:38.88ID:9tzHaMX4
>>935
え? 負けてないけど?
2023/01/15(日) 16:32:56.96ID:x9M0LVrY
fn foo(・・・) -> Path {
>error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
Pathを返したい場合ってどうすればいいの?
Path::newとかはPathを返してくるしPathを返り値とできないってことはないと思うんだけど
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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