Rust part18

■ このスレッドは過去ログ倉庫に格納されています
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/
622デフォルトの名無しさん
垢版 |
2023/01/03(火) 00:56:11.95ID:iu5XrAAr
頭脳明晰な人は人間の限界をよく理解している
注意資源を無駄なことに使わないためにどうすればいいかを考える

頭の悪い人にはこれが理解できない
2023/01/03(火) 01:02:17.21ID:lG7LTjUD
>>622
もっと頭のいい人は、特に注意して無くてもちゃんと出来てる。
2023/01/03(火) 01:17:35.62ID:FM7p8eEf
架空の「何でも完璧にできるプログラマー」などを頭の中で作り上げたところで何の意味もない
実際にそういう人だけで回せている組織を教えてくれ
625デフォルトの名無しさん
垢版 |
2023/01/03(火) 01:24:27.20ID:EuUAQyXR
>>621 そりゃすげえや
天才しか入れない会社であるGoogleで作られたソフトウェアには脆弱性が存在しないことになるんだからな
2023/01/03(火) 01:28:02.05ID:JZU75e4y
>>616
Ruby では、File.expand_path で、\ を、/ に変換できる
627デフォルトの名無しさん
垢版 |
2023/01/03(火) 03:16:16.17ID:KtR68cDI
>天才しか入れない会社であるGoogle
夢見過ぎw
算数100点オジと同じ発想だぞ
628デフォルトの名無しさん
垢版 |
2023/01/03(火) 03:21:18.09ID:4wglqwE1
>>623
最高に頭悪そうな発言だな
小学生1年生かよ
2023/01/03(火) 03:59:57.20ID:FAR4SCa0
>>618
サンクス。それを通すとUNCライクになるんか
リファレンスを見るとこの仕様が確定しているわけではなく
互換性の面でUNCライクのパスが望ましいのかという問題も
なんとなくだけど互換性はドライブレタースタートのほうが高そう
というかググってもパス情報の推奨される扱いとかよくわからんな
PathBufが返ることが多いためかmutをつけてる例が多く見えるけど
加工が終わった後もmutのままにしておくのが望ましいとも思えないし
2023/01/03(火) 07:04:07.60ID:njxOMnvb
>>625
そのGoogleがAndroidにRustを使うようになってバグが減ってるからGoogle程度では頭脳明晰な人ばかりではないらしい

https://japan.zdnet.com/article/35196972/
2023/01/03(火) 08:12:40.12ID:qI8JCo5P
○○バリア!
○○バリア貫通ビーム!
○○バリア貫通ビーム完封バリア!
まじで小学生と同じやな

グーグルの社員ですらメモリ管理をミスる
それより賢い天才が居ればそいつはCで良いよ、でも俺はそうじゃないのでRustを学んでるよ
ある意味メモリ管理を絶対にミスらない天才がコンパイラ
2023/01/03(火) 08:30:40.46ID:iKNX9wDb
>>629
mut が気になるならシャドーイングで消せばいいよ
let mut a = …

let a = a; // これ以降変更不可
2023/01/03(火) 10:24:54.22ID:Wjw3Ta6M
>>629
dunce crateのほうがいいかもね
ていうか本音はcurrent_exe()が完全修飾パス返すのをやめてほしいところ
2023/01/03(火) 12:37:20.83ID:guKgEgHI
ここってこんなにカオスだっけ
2023/01/03(火) 12:48:32.86ID:jNo/ZtXx
ディープステートに関わり持つやつが荒らしに来ている!
2023/01/03(火) 15:23:27.19ID:GGjfHYq/
頭のいい人の気持ちを一般人は理解できない。
2023/01/03(火) 15:33:14.38ID:GGjfHYq/
>>631
犬と人間くらいの知能差があるとすれば話は違ってくる。
Google社員は犬の中の秀才程度。
2023/01/03(火) 15:38:13.00ID:GGjfHYq/
>>631
俺からすれば、コンパイラは決まりきったことだけこなす単純馬鹿だけどな。
639デフォルトの名無しさん
垢版 |
2023/01/03(火) 16:20:19.42ID:N8ek48Mq
>>638
コンピュータなんだから当たり前では?
2023/01/03(火) 17:21:00.77ID:FAR4SCa0
>>632
となるとパスを整形する関数を用意して切り離すべきか

>>633
なかなかよさそうですね。使ってみます
>There are also Windows NT UNC paths (\\?\C:\foo), which are more robust and with fewer gotchas
>but are rarely supported by Windows programs. Even Microsoft's own!
思うことはみんな同じなんやなって
641デフォルトの名無しさん
垢版 |
2023/01/03(火) 18:42:10.36ID:yYGSV1g6
技術評論社の呪い。
2023/01/03(火) 18:46:23.16ID:EF4+Zmp+
技評技評言ってるヤツがしつこいが正直Rust流行ったからって技評のあの構成じゃ売れんだろ
2023/01/03(火) 18:49:28.25ID:FAR4SCa0
canonicalizeって存在しないパス情報を扱えない?のか(fsもdeucnも)
let path = dunce::canonicalize(Path::new(".\\foo")).unwrap();

は.\fooが存在しない場合Errが返ってパニックする
こうなるとパス情報は他の処理系と同じく文字列で保持して
使用するところでPathに変換するのがベターなのかな
644デフォルトの名無しさん
垢版 |
2023/01/03(火) 18:57:54.40ID:yYGSV1g6
>>643
それ、実はかなり深い問題だぞ。
特に、環境依存のないライブラリではな。
Rustだから安全ですとか言ってないで、経験豊富なC++スレにでも聞きに行け。
2023/01/03(火) 20:14:15.53ID:ZKwlKjAo
>>643
っstd::path::absolute
646デフォルトの名無しさん
垢版 |
2023/01/03(火) 20:19:29.87ID:yYGSV1g6
深い問題だと言ってるだろ。
Rustだから安全ですと言ってないで、わかってる人に聞きに行け。
2023/01/03(火) 20:23:30.48ID:iKNX9wDb
>>643
dunce::simplifiedでUNC除去するのがいいんじゃない?
別にPath自体は存在しないパスも保持できるしOsStringにするほどのこともないように見えるけど
648デフォルトの名無しさん
垢版 |
2023/01/03(火) 20:57:51.98ID:pV/Lv/4Y
>>645
\\?\にabsoluteは対応してなくない?
2023/01/03(火) 20:59:49.29ID:FAR4SCa0
>>645,647
そもそも一律で絶対パスに展開するのが最良なのか?ってところから再検討中
リモートになりうるパスを絶対パスに展開するとトラブルの発生率が増す気がしてきた
650デフォルトの名無しさん
垢版 |
2023/01/03(火) 21:01:15.66ID:yYGSV1g6
Rustスレでそんなこと質問したって無理だから。
いい加減諦めて実績のある言語スレに行け。
2023/01/03(火) 21:21:04.77ID:FM7p8eEf
誰も「Rustだから安全です」なんて言ってもいないしそもそも必ずしも安全でないことぐらい少しRustのこと勉強した人なら誰でも知ってる
2023/01/03(火) 21:39:29.06ID:MrpqBo7i
>>649
とりあえずPathBuf(参照ならPath)で保持しておいて必要な時にcomponents()で展開する感じがいいのかな
std::pathのPathBuf、Component、Prefixあたりでそれなりに抽象化はできてると思う
あとは目的次第
2023/01/03(火) 21:42:19.01ID:nBTO23xG
>>651
>>231
654デフォルトの名無しさん
垢版 |
2023/01/03(火) 21:54:07.94ID:yYGSV1g6
>>651
知ってたらRustなんか使わんだろ。
2023/01/03(火) 21:57:01.67ID:njxOMnvb
しかし何でこんなにアンチ多いんだろうな
ノイジーマイノリティのような気もするけど
海外だと人気あるのにな
656デフォルトの名無しさん
垢版 |
2023/01/03(火) 21:57:32.41ID:ma6uRps2
Rustは使うこと自体が修行だからだよ
657デフォルトの名無しさん
垢版 |
2023/01/03(火) 21:59:13.22ID:3FZZMCLr
C/C++のように黒魔術を使いたい
2023/01/03(火) 22:14:16.03ID:iKNX9wDb
>>655
多いって言っても結局はいつもの人が連投してるだけだしせいぜい数人では
他のSNSやリアルではこんな人見たことないしなぁ
2023/01/03(火) 22:17:50.62ID:MrpqBo7i
あくまでこのスレの雰囲気からの判断だけど
自分は万能で何でもできると思ってるタイプの人間がどうしてもRustを使いこなせなくて
自分が理解できない言語は欠陥言語に違いないって感じで叩いてる印象
多少扱いにくい言語でもHaskellみたいにマイナーならここまで荒れなかったかもしれない
660デフォルトの名無しさん
垢版 |
2023/01/03(火) 22:23:59.76ID:yYGSV1g6
Haskellも叩かれてただろ。
技術評論社のステマが過ぎるんだよ。
2023/01/03(火) 22:56:34.25ID:LnW2mOli
>>659
「すっぱい葡萄」だな
2023/01/03(火) 23:01:13.76ID:EF4+Zmp+
少なくともRustを使えっていう現場は今のところ日本では皆無だと思うけどね
2023/01/03(火) 23:03:15.73ID:5f9B2sCv
>>659
C/C++ は文法が無茶苦茶で扱いにくい部類なんだがなんだかんだで資料も多いし
慣れている人も多いから「これが普通」みたいな感覚になっちゃってるんだよな。
そこから遠い言語は「なんか普通じゃないやつ」に見えてしまうんだと思う。

言語としてスマートであろうがなかろうがエコシステムが充実してるほうが強いので
そこで C/C++ が長く支配的な立場だったけど現状の Rust なら十分すぎるほどに
充実してきてるんだから用途的にマッチするなら使えばいいと思うんだがなぁ。
664デフォルトの名無しさん
垢版 |
2023/01/03(火) 23:11:21.73ID:Le3CBufs
>>659
叩かれてるうちが華よ。
Haskellスレの↓が的を射ている。2023年、Rustでも見放しが起きるかもよ。
https://mevius.5ch.net/test/read.cgi/tech/1639713446/181
2023/01/03(火) 23:18:33.15ID:jBK7hIQX
>>663
Rustはそれ以上に変な文法だ。
2023/01/03(火) 23:19:10.28ID:jBK7hIQX
>>659
使いこなせないんじゃなくて、魅力を感じない。
2023/01/03(火) 23:19:50.78ID:mPQC6C/f
新着レスの表示を押したらgihyoアンチ出てきて笑ってしまった
2023/01/03(火) 23:23:41.66ID:jBK7hIQX
なお、Rustが欠陥言語なのはハッキリ分かってる。
669デフォルトの名無しさん
垢版 |
2023/01/03(火) 23:26:45.90ID:tE3kJFmJ
https://mevius.5ch.net/test/read.cgi/tech/1639713446/181
になぞらえよう。

2022年、NSA(アメリカ国家安全保障局)公認メモリ安全言語にGoが入った時点で、
「Rustが自賛する」メモリ安全は「白けた話」になった。
Rustはもうどうでもいい。
2023/01/03(火) 23:27:03.95ID:EF4+Zmp+
>>660
お前にとって技術評論社はギフハブか何かに見えてるのか?
2023/01/03(火) 23:48:42.74ID:jBK7hIQX
使いたいけど使えない人 = 能力不足。
使えるけど使いたくない人 = 個人の選択の自由。
俺は後者だから。
672デフォルトの名無しさん
垢版 |
2023/01/04(水) 00:40:30.83ID:DBMM4FaV
技術評論社が自演ステマする言語はすべて潰れる。
2023/01/04(水) 00:42:55.13ID:ZDKq+a5p
文字列のパスの正当性をチェックしてくれるクレートとかないんだろうか
いわゆる汚染チェックだがダメ文字が含まれている、記法が有効ではない等々
WindowsのAPIにそれっぽいのがないかと思ったけど見つけられんかった
GetFullPathNameはファイルのみでディレクトリ名は不可っぽいし
exist類を利用する方法も出てくるけどこれはファイルやディレクトリがある
ケースでしか使えない
674デフォルトの名無しさん
垢版 |
2023/01/04(水) 00:55:50.44ID:BfGbXrWm
2022年 はちみつ味の複製ポエムバレしてRustは白けた話になった
2023年 標準ライブラリ軽視からのクレート探しの自走力無き苦行
合計:白けた話+苦行=見放し
2023/01/04(水) 01:06:23.83ID:U+qe0cea
いままでC/C++の代わりになると云われた言語たちがどれだけ敗走したことか
そのRustの力とやら、見せてもらおうか!
676デフォルトの名無しさん
垢版 |
2023/01/04(水) 01:06:49.84ID:tdp90SFj
>>657
ハイジェニックマクロはどうだい?
2023/01/04(水) 02:42:42.79ID:qTJ/GIFa
Rust使わないことを選んだのなら、こんなとこで無駄な時間使ってないでC/CPPのスレで活躍したほうが良いのでは?
2023/01/04(水) 03:10:48.22ID:U+qe0cea
Rust「うあ~!汚コード増し増し負けたンゴ~!」
679デフォルトの名無しさん
垢版 |
2023/01/04(水) 09:03:32.34ID:oXSJ1jtE
>>662
ここのRust'erも大体は海外企業勤めでしょ
国内は仕事無いし
2023/01/04(水) 09:34:24.21ID:lFNs7lW+
>>662
わかんないよ、数年前だけどAdaの仕事があったし
まあ研究所からだけどウチの会社にAdaなんて書けるやつがいることにビビったわ
681デフォルトの名無しさん
垢版 |
2023/01/04(水) 15:33:07.79ID:vtx89qb1
ま、ぶっちゃけ、RustよりSQL覚えた方が仕事はあると思うよ。
2023/01/04(水) 15:42:42.57ID:ppyTErtg
カーネルドライバのいくつかがRustで書かれ始めちゃってるので
いやでもぶち当たる日が来るので仕方なく勉強してます。
今のところはクソ言語と言い切れるほどのクソさにはぶつかってないかな
683デフォルトの名無しさん
垢版 |
2023/01/04(水) 16:09:30.84ID:KNHhQhy0
基本的にクソだけど我慢出来ないほどではない
2023/01/04(水) 18:43:18.99ID:I7h9hggJ
>>659
叩かれてない言語は多くの人が使いこなしてるって意味だねw
2023/01/04(水) 18:51:29.68ID:MrWX6jB2
プロファイラーの皆さん鑑定お願いします
https://mevius.5ch.net/test/read.cgi/tech/1672409791/27
https://mevius.5ch.net/test/read.cgi/tech/1670663822/673
2023/01/04(水) 19:22:28.35ID:EQzsTg8p
オッサンだけど女の子に生まれて百合恋愛がしたいだけの人生だった、女の最大の特権って百合ができる事だよな
2023/01/04(水) 19:56:07.97ID:lFNs7lW+
>>666
なんで魅力を感じない言語のスレなんてわざわざ見てるんだ?
暇すぎるだろw
688デフォルトの名無しさん
垢版 |
2023/01/04(水) 19:58:59.00ID:Ms6LgXDx
業務で使わされてるから
2023/01/04(水) 20:25:18.15ID:5/zWl+ll
>>687
悪い評価も言論の自由な社会では大事。
2023/01/04(水) 20:45:25.47ID:lFNs7lW+
>>689
正しい評価ならな
無能の誹謗中傷は要らん
2023/01/04(水) 20:48:18.41ID:5/zWl+ll
>>690
正しい評価のつもりだ。
692デフォルトの名無しさん
垢版 |
2023/01/04(水) 20:55:18.09ID:QxUfEWbZ
技術評論社のステマが最も有害。
2023/01/04(水) 21:20:30.26ID:lFNs7lW+
>>691
根拠も示さずに正しいつもりとか言われてもね

> なお、Rustが欠陥言語なのはハッキリ分かってる。
694デフォルトの名無しさん
垢版 |
2023/01/04(水) 21:23:31.68ID:QxUfEWbZ
Rustには欠陥が無いようなことを言い出したぞコイツ。
2023/01/04(水) 21:25:52.36ID:oUT+lvyR
なんかまたErrorトレイトのメソッド変わってる……
見落としてたけど1.64からでしたか
2023/01/04(水) 21:59:12.78ID:lFNs7lW+
>>694
なにが欠陥なのか指摘も出来ないクズ乙
2023/01/04(水) 23:47:28.90ID:tw+8ew0C
まあリーナスみたいに的確な指摘がちゃんと出来れば皆聞く耳を持つだろうにね
2023/01/05(木) 01:09:00.20ID:DO2QGxg+
>>697
Linusみたいな有名人が言ったら信じるだけで、
ちゃんと説明しても自分の頭で理解できない人が多い。
2023/01/05(木) 01:10:45.51ID:9rdfNmCZ
それ以前に欠陥の具体例すら挙がってないが
2023/01/05(木) 01:14:21.99ID:DO2QGxg+
>>699
このスレや前スレで何度も上がってる。
2023/01/05(木) 01:23:36.54ID:55d9gDO6
複数の実装を抽象化する想定のtraitにErrorなどというassociated typeを持たせて実装を分けてしまうと死ぬほど面倒だということを学んだ
2023/01/05(木) 12:28:43.89ID:QUS/oJRF
windows::~の使い方の情報が少なすぎ。String→PCWSTRの変換方法もよくわからないし
MessageBoxWに任意の文字列を表示することすら不安定
FFIでuser32のMessageBoxWを直接叩いたほうがマシ。こっちならさすがに安定するようだ
2023/01/05(木) 13:45:51.93ID:W/FjpTuq
制限多いしリファクタリングしづらいわな
2023/01/05(木) 17:20:24.40ID:YRkXkG+b
結果汚コードまみれのゴミになる
2023/01/05(木) 17:33:14.38ID:Hd+KI7WM
>>702
Rustの文字列はUTF-8でナル終端なしだからワイド文字だと
・UTF-8→UTF-16変換
・'\0'追加
の2段階の操作が必要

ナル終端だけならstd::ffi::CStringでいけるけど、ワイド文字(UTF-16)使うなら
内部でVec<u16>を保持する専用の文字列型を用意した方がよさそう

あとはwindows::core::PWCSTR::from_ptr()にVec::as_ptr()を渡してPWCSTRを作る
このPWCSTRが使われてる間はVecを消したり変更したりすると危ないけど
&PCWSTRで返す形にすればライフタイムで束縛できるかな

この辺の操作はwindows-rsでも直のFFIでも変わらないと思う
2023/01/05(木) 18:06:32.68ID:QUS/oJRF
>>705
そんな感じで実験してみたんだけど不定期にMessageBoxWが意図しない文字列を表示する
ボローチェッカーは何も言わないけど結果からすると明らかに信用ならない
FFI利用の直叩きなら問題ないさそうだしPWCSTR::from_ptr()以降が怪しそう
2023/01/05(木) 20:22:41.35ID:fYcl0Ze4
Carbonに期待
2023/01/05(木) 21:53:29.87ID:qIx9AnNX
他の言語でも同じ問題抱えているのに
rustではこういう問題があるぞーって批判目的で書いてる人って何なんだろう
2023/01/05(木) 22:15:07.43ID:QUS/oJRF
というか
ttps://learn.microsoft.com/ja-jp/windows/dev-environment/rust/rss-reader-rust-for-windows
この記事って罠じゃね?winapi使うかFFI使うかしたほうが無難な気がする
2023/01/05(木) 22:32:24.42ID:W/FjpTuq
レイヤー低いところをいじる場合はそのまま生で見えた方がデバッグがやりやすいってのはある。
まあ生で見えるから変なことも起こるんだが、この辺りはトレードオフの話だ。
2023/01/05(木) 23:50:31.90ID:gC/ORVIb
RustがCやC++の文法に似ているというのはウソだと思うね。
本当に似てると思うなら感性を疑う。
712デフォルトの名無しさん
垢版 |
2023/01/06(金) 00:27:00.08ID:YGAtDmlk
似てる
C++から黒魔術をほとんど排除したのがRust
2023/01/06(金) 00:30:58.61ID:HDVxNHRA
文法つっても BNF 的な意味での文法とセマンティクスまで含めた文法では意味合いが違うし、
「どういう意味で似ている」「どういう意味で似ていない」という基準を提示せずに感性で判断しようとするのなら感性を疑う。
2023/01/06(金) 00:47:31.60ID:Pn7zd4wp
>>712
そうは思えないけどな。
似てると言い切るのは無理やり感がある。
2023/01/06(金) 00:59:43.04ID:Bj/0zi83
プロファイラーの皆さん鑑定お願いします
https://i.imgur.com/c9uHodQ.png
https://i.imgur.com/cQKkRzG.png
2023/01/06(金) 01:00:07.18ID:sXnz8uH8
はちみつ餃子vsオイコラミネオスレ並行するのやめてもらっていいですか
2023/01/06(金) 01:04:05.46ID:qbbs3BIz
お前ら独自エラーはどうやって作ってる?
俺はenum使ってるんだけどこれ普通?
2023/01/06(金) 01:25:12.21ID:AnNs2Aua
ディレクトリのコピーってないのか・・・再帰処理の実装は特に面倒なのに
2023/01/06(金) 01:33:35.60ID:Pn7zd4wp
MSの際と出もRustをC++と似てると豪語しているが、信じられない。
720デフォルトの名無しさん
垢版 |
2023/01/06(金) 02:32:49.50ID:xvNP3xU8
RustとC++がそっくりってそれ中国語と英語がそっくりって言ってるようなもんだよ
2023/01/06(金) 02:35:31.30ID:qbbs3BIz
RustはテンプレートがC++よりスマートだよね
template<typename T>とか書かなくてもいいし
■ このスレッドは過去ログ倉庫に格納されています