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/
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>とか書かなくてもいいし
722デフォルトの名無しさん
垢版 |
2023/01/06(金) 02:57:32.46ID:BA4ANj8t
>>720
中国語と英語はそっくりかもしれないけど
C++とRustは全く違うものです
723デフォルトの名無しさん
垢版 |
2023/01/06(金) 03:08:45.48ID:7s7EbfVR
Rust, Go, Swiftの3言語登場の前後で、時代が変わった級の変化を感じてしまうが・・・・
有名言語で一番どれに近いって言われたら、文法は違うけどSwiftじゃないかな
2023/01/06(金) 08:20:37.92ID:7YOuN382
ムーブとRAIIあたりはC++くらいしか似てるものがない気はする
他はそんなに似てないかな
2023/01/06(金) 11:05:56.60ID:W6TcEBoi
C++は似てる似てない以前にちゃんとした知識がないわ。
726デフォルトの名無しさん
垢版 |
2023/01/06(金) 11:09:49.68ID:oG71Qopd
>>717
普通
thiserrorのドキュメント見るといい
727デフォルトの名無しさん
垢版 |
2023/01/06(金) 11:11:24.59ID:oG71Qopd
>>723
俺もメジャーな言語ならSwiftが一番近いと思う
728デフォルトの名無しさん
垢版 |
2023/01/06(金) 11:25:37.00ID:3gqx/ngg
Kotlin/Nativeもポインタ触れたりして結構似てるぞい
根幹をC++で作ってるから当たり前なんだけどもw
729デフォルトの名無しさん
垢版 |
2023/01/06(金) 11:26:31.04ID:3gqx/ngg
Swiftと比べたらKotlin/Native とか下の中の下ではあるがw
730デフォルトの名無しさん
垢版 |
2023/01/06(金) 11:51:53.71ID:6RDP1hdo
zigのcomptimeが他言語でもほしいです
2023/01/06(金) 14:03:28.15ID:jehUaEn+
Rustは型チェッカが厳しすぎるからゴミ言語
732デフォルトの名無しさん
垢版 |
2023/01/06(金) 14:04:50.34ID:+8Hk5pSO
厳しすぎる??
2023/01/06(金) 14:05:57.12ID:jehUaEn+
普通にocamlとかのそこらの関数型言語よりはるかに厳しい
2023/01/06(金) 14:36:09.35ID:s69F+oI7
たぶん型チェックではない気がするけどコンパイラのチェックが厳しいとゴミ言語になる理由がよく分からない
何となくで書けないのが不満なのかクラッシュバグを量産できないのが不満なのか
C言語でも-Wallとか-Werrorをつければ結構コンパイラうるさいよ

RustとCが近いと感じるのは脳内で同等のコードをイメージしやすいからかな
RustとC++はそんなに近いとは思わない(被ってる部分もあるけど別方向に派生したC言語という感じ)
2023/01/06(金) 14:40:01.34ID:rO9XvLaF
>>733
具体的には?OCamlではどうでRustではどうって例ある?
2023/01/06(金) 14:48:19.40ID:17lyPwSx
>>734
>RustとCが近いと感じるのは脳内で同等のコードをイメージしやすいからかな
近いとは思わんけどな。
2023/01/06(金) 14:50:54.43ID:jehUaEn+
>>734
Rustほど型チェッカを厳しめにしなくても
安全なプログラムは実現できる
だからこそRustは流行らない
2023/01/06(金) 14:52:43.20ID:jehUaEn+
>>735
OCamlでは値の寿命を気にしなくていい
GCが管理するから
後はRustとは違って型推論をさせるコツというのが少ない
2023/01/06(金) 14:56:59.14ID:WgqbE23F
>>715
これ、ねらったトリップを出せるってこと?
どうやるの?
2023/01/06(金) 15:15:47.67ID:pLqfOblc
毎日似たようなやつ出てくるな
2023/01/06(金) 15:30:04.53ID:eVJa6RQn
向こうで聞けよ
https://i.imgur.com/cQKkRzG.png
http://hissi.org/read.php/tech/20230102/Y3FtNVJpZ20.html
http://mevius.5ch.net/test/read.cgi/tech/1588748438/1000
742デフォルトの名無しさん
垢版 |
2023/01/06(金) 15:32:03.05ID:Kzld2VSs
>>738
暗黙的に型変換されることが多いという話なのか?
でなければどっちも型チェックの話じゃないと思うんだが
2023/01/06(金) 15:40:58.01ID:rO9XvLaF
>>738
> 後はRustとは違って型推論をさせるコツというのが少ない

(´・∀・`)ヘー
でも少ないどころかOCamlに
「型推論をさせるコツ」なんてもんがそもそもあっただろうか…

型チェッカがどうこうは実は今もよくわからんけど
型の推論はRustのほうが数段ショボい感じ
「型推論をさせるコツ」とかいう話も大変Rustっぽい
2023/01/06(金) 15:54:57.11ID:17lyPwSx
「Rustを勉強したい」「WasmをRustで決まり」みたいな話ばかりで
実際に作ってる人がほぼ居ないのがRust。
745デフォルトの名無しさん
垢版 |
2023/01/06(金) 16:18:23.51ID:ka2uAVZR
rust も ocaml も型推論はHindley Milnerベースだろ。
rustで厳しいのはボローチェックやライフタイムのせいじゃないの?
それらも型に含める?広義では含むか、でも狭義にはちょと違うような。
2023/01/06(金) 16:52:55.39ID:1HBuA6S6
ボローチェックやライフタイムをそこまで低レイヤー向けじゃない言語に入れてみた方が需要あるんじゃないかね。
2023/01/06(金) 17:37:26.05ID:sXnz8uH8
低レイヤー向けじゃないならGC使えばいいんだからライフタイムチェックなんてする意味無くね
2023/01/06(金) 17:45:15.81ID:bmHmWdW4
意図しない変数書き換えはGCで防げないと思う
2023/01/06(金) 18:18:03.78ID:4UTCkTyw
>>745
hindly milnerベースって言っても使い勝手が違う
rustは関連型という機能があるからocamlのように型推論が強力なわけではない
あと推論順序の影響を受ける
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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