Rust part28

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2025/03/24(月) 17:37:00.15ID:NJwebgj2
公式
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 part27
https://mevius.5ch.net/test/read.cgi/tech/1733146370/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/03/26(水) 12:17:05.16ID:IF1WIx2a
>>38
確かにRustは清書用とは良く例えたもんだ、Rustは仕様追加変更に弱そうだし

出始めは高速で注目されたalacrittyなんて文字関連不具合は非対応の一点張りだしなあ
TypeScriptコンパイラ(type checker)で言うと、何年もかけてRustで作ったら、その間の停滞はもちろん、その後も進化止まるからなあ
2025/03/26(水) 12:19:09.43ID:VitzB+KX
「Google Chrome」のフォント処理がC/C++言語からRust言語に
「FreeType」からの移行でメモリ安全性を改善
https://forest.watch.impress.co.jp/docs/news/1672186.html
2025/03/26(水) 12:21:00.15ID:bllph6O/
性能などでC実装の既存コマンドを越えられるポテンシャルがあるからね
あとは利用者のバックグラウンドがUNIX系の人多いのかな
Goはランタイム付いてきてバイナリが肥大化するから魅力ない
2025/03/26(水) 12:25:26.75ID:rpkYHztH
>>30
最初から結論出てたんだな
境界関係者の詭弁にはもう騙されない
2025/03/26(水) 12:35:10.24ID:8nhBW1ew
>>30
本物アカデミア発のHaskellは流石
44デフォルトの名無しさん
垢版 |
2025/03/26(水) 12:37:17.45ID:wQYu/WJ8
>>42
HaskellでBoundsを引数にConstraintsの境界を指定したからといって
BoundsがConstraintsと等価にはならないだろう
2025/03/26(水) 13:00:48.37ID:Rp5VJ7+C
拗らせ詭弁爺>>44は境界(boundsじゃないよ、boundaryだよ)の数学的定義も知らずに妄信してるんだろ
2025/03/26(水) 13:32:04.61ID:omia1HUs
>>40
Chromeも次々とRust化されていってるな
停滞しているFirefoxを追い抜いてRust化が進むのだろう
2025/03/26(水) 13:56:36.97ID:GlRCQ5iu
>>46
FirefoxはちょっとRustにかまけたせいで停滞したからな
chromeはお大事に
(カラーとかSVGが済んで今後10-20年間はフォント関係の大きな規格追加変更しないつもりかもね)
2025/03/26(水) 13:59:25.21ID:GlRCQ5iu
>>41
>>36によるとそのポテンシャルは発揮されてないし、マルチスレッドの力技ならGoの方が柔軟で規格追加変更に強そう
2025/03/26(水) 14:06:07.26ID:1e+q4ua7
>>48
Windowsなんて相手にしてないんよ。MS製品使いなよギガジン
MSのDos窓のfindとの比較してもなあ
2025/03/26(水) 14:11:51.14ID:b+j3piho
恥ずかしいの沸いとるしw
msys2知らんのやろな
2025/03/26(水) 14:30:05.79ID:1e+q4ua7
そんなものの上で比較して何が嬉しいギガジンと言っている
LinuxDesktop使わんかい
2025/03/26(水) 14:31:52.57ID:1e+q4ua7
せめてmacOSだな
ドザーしかギガジンにはおらんのかもな
2025/03/26(水) 14:33:11.38ID:Ep1QhWaG
Rustはリファクタリングや変更に強いため
それらでエンバグしやすい言語よりもRustを使うのが好ましい
2025/03/26(水) 14:41:56.21ID:T3pkuVQ+
恥の上塗りすこいな ID:1e+q4ua7
>>34が気にかけてるOsStr/WTF8の影響の話だからな
windowsでやらなきゃ意味ないよ

とは言えRust自体がWindowsなんて相手にしてない節が多々あるので、RustがWindowsで遅いと言われても納得ではある

> LinuxDesktop使わんかい
まずLinuxでこれやって見ては
> time fd --threads=1 > /dev/null と time find . -print > /dev/null
2025/03/26(水) 14:45:41.09ID:1e+q4ua7
ガハハ、Linuxで遅いと残念だから調査してみますか
2025/03/26(水) 14:52:45.05ID:rX+At6OX
一般的にマルチスレッド対応をする時
並列に動作できるようにアルゴリズムを組み替える
シングルスレッドで動かすと最善アルゴリズムではなく最善より不利になったとしても、並列化できることを最優先にアルゴリズムを変える
そういう常識を知らない無知な人が「--threads=1」で実行して速度比較してしまう
2025/03/26(水) 15:01:36.90ID:HFWxx5Om
>>56
そんな保険張らなくても良いと思うよ

数値計算などを含めると分割コストが馬鹿にならないけど、ディレクトリトラバーサルはロスなくマルチスレッドが効きやすい処理だから
自分は昔から自作のMPMCキューとスレッドプールでその手の処理やらせてる
58デフォルトの名無しさん
垢版 |
2025/03/26(水) 15:05:10.71ID:wQYu/WJ8
>>57
第一生命の人にそれ言えるの?
59デフォルトの名無しさん
垢版 |
2025/03/26(水) 15:08:57.08ID:NpEBbPpg
FreeTyoe終了するんか胸熱
2025/03/26(水) 15:10:32.50ID:2W1ljvQ/
あの記事の比較を真に受けるやつはどうかしてるぞ
簡単なベンチマークすらできないのか?
2025/03/26(水) 15:12:31.05ID:NpEBbPpg
>>53
リファクタリングって車輪の再発明のことだよ
2025/03/26(水) 15:33:35.65ID:tAQnxLhJ
>>60
fd vs (gnu)findの記事で、(ms cmd)dir -s をしかも powershell(.net) 上でやるのが良い味だしてるよなw

--threads=1 比較はこのスレでの話
2025/03/26(水) 17:16:48.66ID:+byiBRe6
>>53
そこまで言うなら論より証拠が欲しいな

お題スレで697が型変更(BigInt要件追加703,706)で困ってるかもしれないので助けてあげて
C++の方は難なく型変更出来た、それも(おそらくアルゴリズム内容に感知しない)別人が
https://mevius.5ch.net/test/read.cgi/tech/1691038333/697
2025/03/26(水) 18:28:10.20ID:/yA7e5F+
rustは身内よりも
外からの攻撃に耐えてる感じか
素性がいいからな
ポテンシャルが危険視されてんだろ
2025/03/26(水) 18:45:50.26ID:vEMRQKYf
>>64
あんた>>53と同類だな
>>63の実演は>>64がしても良いんだぜ
2025/03/26(水) 18:47:25.84ID:vEMRQKYf
>>63のこの部分は重要
> (おそらくアルゴリズム内容に感知しない)別人が

アルゴリズムを読み解いて書き直したら>>61の通り車輪の再発明だからな
ましてC++版をRustに書き直すのも車輪の再発明そのもの
2025/03/26(水) 19:03:18.26ID:GKti4th2
再発明禁止したらLispしか書けなくなるぞ
それはそれでいいか
2025/03/26(水) 19:05:21.95ID:fvsJG7TC
>>41,53,64
そのポテンシャル、いつ発揮するの?
2025/03/26(水) 19:06:51.25ID:fvsJG7TC
>>41,53,64
そのリファクタリング、いつやるの?
2025/03/26(水) 19:09:36.76ID:GKti4th2
Ubuntuのcoreutilの一部をRust実装にしてみる予定あるよ
ゆっくりかもだが着実に浸透していく
2025/03/26(水) 19:16:40.14ID:DX3iKWhq
このまんま過ぎる件
>>38
> Rustってlinuxコマンドの焼き直しばかりしてるイメージ
2025/03/26(水) 19:19:09.38ID:/yA7e5F+
>>71
乗っ取ってる最中だな
2025/03/26(水) 19:20:31.32ID:DX3iKWhq
やりがいあるのかね
> linuxコマンドの焼き直しばかり

やらされるようになったら愛され言語陥落
2025/03/26(水) 19:22:06.71ID:DX3iKWhq
>>72
ははw、Linuxはデバドラで軒下貸しただけのつもりだったのかな
2025/03/26(水) 19:33:31.85ID:GKti4th2
Linuxはカーネルだけだから関係ないぞ
置き換えてるのはGNUのコマンドだね
2025/03/26(水) 19:36:49.23ID:1ptNiZfL
>>63
Rustは強い静的型付け言語なのでその手で問題があれば必ずエラーとなり教えてくれる
問題児となる暗黙の型変換や(!Copyの時の)暗黙のコピーがないため優秀
エラーに従いそれらを手入れしてやるだけだ
もちろんコピーせずに済むところは参照を使い必要なところのみclone()する
アルゴリズムの変更は必要ない

ここまで一般的な話だが
BigIntに限ればさらに効率高めるためにxxx_assign系を使うように変えられるとヒープ割り当て抑制でさらに効率が上がるだろう
頑張れ
2025/03/26(水) 19:42:15.95ID:/yA7e5F+
BSDがカーネルからgcc消した時もまずはコマンド(linuxからしたらユーザーランド)からコツコツやってたな
2025/03/26(水) 19:44:59.97ID:WKIoyxAu
でかくて体力あるとこが立ち泳ぎしてる段階
79デフォルトの名無しさん
垢版 |
2025/03/27(木) 00:25:51.02ID:UR4LJQwW
車輪の再発明でもいいからOpenCVのRust版みたいなの欲しい、とは思う
巨大だから作り直しが面倒というのは目に見えてるが
2025/03/27(木) 01:13:52.13ID:Gs7UoxFU
Rustは車輪の再発明に向かないよな。というのもコスパ悪いから。すでにバグ取りして動いてるC++とかライブラリーをわざわざ書き直すなんて俺たちはしないな

どちらかと言うと真新しいライブラリーの設計するときに導入しやすいし、チームにも勧めやすい。俺たちのチームでは一からスキーマ決めて新しい機能追加していこうってなったときテストコード含めて一括で書けるからライブラリークレイトがデグレイドしなくて開発効率上がってる

0->1型開発ならRustでやりますと言っても承認降りるよ。品質保証部とかの人もリリース済み製品の変更は嫌うが、新規開発は好きにやってと言ってくるし
2025/03/27(木) 11:37:12.40ID:vU3T1Sq/
OpenCVのRust版はもうあるんじゃないの
pureRustしか勝たんのなら知らん
2025/03/27(木) 11:43:38.51ID:vU3T1Sq/
>>71 >>69
彼らがどうしてもRustに置き換えるのに拘ってる理由は
善意的に深読みするとGPL汚染からの完全脱却を目指してるとか鴨試練
2025/03/27(木) 12:03:44.42ID:oA1Vk6uc
>>81
bindingはあるけど、>>79は大元のOpenCVインストール&設定が出来なくて「pureRustだったらCargoが全部やってくれるのに!」と愚痴ってるだけと予想
python等みたいにプリコンパイルライブラリも配信パッケージに含めたら良いのにね
2025/03/27(木) 12:07:49.67ID:vU3T1Sq/
>>76
>BigIntに限ればさらに効率高めるためにxxx_assign系を使うように変えられるとヒープ割り当て抑制でさらに効率が上がるだろう
頑張れ

ほんそれ
2025/03/27(木) 12:09:12.20ID:oA1Vk6uc
これとか
https://mevius.5ch.net/test/read.cgi/tech/1698705458/799
2025/03/27(木) 12:12:23.94ID:vU3T1Sq/
>>83
なるほどね
2025/03/27(木) 12:14:17.75ID:vU3T1Sq/
>>85 の 799 に答えるなら「OpenCVは既に入っている」なんだけどね
2025/03/27(木) 12:26:21.40ID:UV4Rce1I
>>80
どの言語からどの言語に移植するのもコスパ悪いので必要ないならする意義はない
しかしそれでもRustへの移植が行われているのは実利があるからでその2大理由は
CPUメモリのリソース効率が良くなる場合
セキュリティ脆弱性を含めた安全性が良くなる場合
もちろん単純な移植ではなく再設計を伴うならばそれ自体がRustを選ぶ理由になる
89デフォルトの名無しさん
垢版 |
2025/03/27(木) 12:35:05.22ID:rSJQMcmU
そこでGoです
90デフォルトの名無しさん
垢版 |
2025/03/27(木) 12:40:56.78ID:rSJQMcmU
つまり簡単に言えばTrait制約は誤訳ってこと?
91デフォルトの名無しさん
垢版 |
2025/03/27(木) 12:49:37.81ID:OnnNAMTi
つまり、英語の単語と日本語の単語は一対一対応ではないということ
2025/03/27(木) 12:58:01.56ID:3vznYkp6
>>90
一貫することが技術用語としては正しい態度なんだよ。
自然言語的な意味で誤訳かどうかは最初から問題じゃなくて「Rust 用語では境界ということにする」という先駆者たちの合意に反して新しい語をあてるのはよくなきだよなって話。
2025/03/27(木) 13:10:41.28ID:tmx8Uwvy
バイナリサイズが大きくならない
も入れておこう。Docker imageなどでは重視される
2025/03/27(木) 13:13:21.28ID:RnRbuasr
>>93
Cと比べて小さかったら、機能がそろってないだけだな
95デフォルトの名無しさん
垢版 |
2025/03/27(木) 13:13:44.07ID:rSJQMcmU
Goはインストールすれば必ず動くから
Dockerの必要なし
繰り返す
Dockerの必要なし
2025/03/27(木) 13:15:12.84ID:3vznYkp6
>>95
docker を何だと思ってんの?
2025/03/27(木) 13:17:24.49ID:tmx8Uwvy
>>94
Rustなら同等サイズで同機能狙えるでしょ。アピールポイントやで
2025/03/27(木) 13:46:24.95ID:3vznYkp6
C の主要な関数は実質的に OS の一部みたいになってる (libc.so) からその分だけ実行ファイルは小さくなる。
工夫すれば Rust でも同等を狙うことは出来るが Rust らしさは失われるよ。
2025/03/27(木) 13:56:42.17ID:tmx8Uwvy
コードの見た目と安全性がRustのままならいいよ
libc使うと変わっちゃうか。unsafeが多そう
2025/03/27(木) 14:21:40.81ID:UV4Rce1I
>>98
>>99
もちろんRustでもlibcを使っているよ
stdでlibcがある環境ならね
no_stdでcoreなら使わない
2025/03/27(木) 14:33:43.34ID:+8xdP46W
RustでUNICODEのicu(icu4x)を使うと肥大化するで
2025/03/27(木) 16:58:03.46ID:EMjUNBdM
>>92
先駆者www
2025/03/27(木) 17:12:14.97ID:2OttSvV1
bounds問題は、もうテンプレに入れておけよ
本によって訳語が違うので注意ってことでいいでしょ
コミュニティ内の合意が、出版社に届くとは限らんのだから
2025/03/27(木) 17:34:35.49ID:7P69hYA/
境界vs制約について議論してるコミュニティあったの?
2025/03/27(木) 17:37:35.59ID:op3HGEGw
>>92
Rust信者が特にC/C++の先駆者に無礼なのを棚に上げるな
2025/03/27(木) 17:42:30.79ID:2OttSvV1
>>104
無いならなおさら。最初の本の訳者同士で決めた用語がスルーされるとか、普及期なら普通のことでしょ
明治時代ならよくあったろ
2025/03/27(木) 18:37:05.75ID:WB8UVCI6
libcクレートをフル活用すれば、CのようなRustのような変なプログラムを作れる
テキスト出力にprintf()使うとか
2025/03/27(木) 18:43:14.30ID:qPwdpjGN
福沢先生に聞いたら良い
109デフォルトの名無しさん
垢版 |
2025/03/27(木) 19:08:01.78ID:rSJQMcmU
先行者はRustで制御してるってほんとですか?
2025/03/27(木) 19:12:24.22ID:6YJukqSn
GC無いから制御も余裕でしょう
2025/03/27(木) 22:05:08.25ID:yaqaVOpU
どうしても境界を存続させたい勢力(一名)が足掻いてるな
2025/03/27(木) 22:07:59.51ID:ycBRQ3y2
どっちでもいいけどとっとと手を動かせ。

the rust book 現行版の翻訳があればそれに従う。
2025/03/27(木) 22:13:01.55ID:DQS6wNAr
まぁ言われてみれば境界ってちょっとおかしいよな
多分境界エラーとかアウトオブバウンズとか
そっちの直訳に引っ張られたんやろけど
制約がいいとも思わんけど
制約のほうが若干マシ
114デフォルトの名無しさん
垢版 |
2025/03/27(木) 22:20:16.49ID:rSJQMcmU
でも原文が境界の意味で使ってるからね
2025/03/27(木) 23:19:56.80ID:+o4VGdTp
>>114
根拠を提示しなよ
2025/03/27(木) 23:39:29.81ID:evd2Cb0n
トレイト範囲が適訳
制約はアタオカ
2025/03/28(金) 00:38:42.10ID:vUju0k4U
トレイト制限よな
118デフォルトの名無しさん
垢版 |
2025/03/28(金) 11:47:49.50ID:MGLT6E0C
>>116
範囲イイね
119デフォルトの名無しさん
垢版 |
2025/03/28(金) 11:48:49.20ID:MGLT6E0C
制約と言ってる人は意味が分かっていないのでは?
2025/03/28(金) 12:17:15.99ID:oVOs+4++
トレイトをカタカナにしてるんだから、残りもカタカナでいいんじゃないの?
2025/03/28(金) 12:43:54.75ID:T80f2PLT
トレィト博士?
122デフォルトの名無しさん
垢版 |
2025/03/28(金) 12:44:11.20ID:VPiwRdmL
トレイト製薬はCで**をダブルポインタと言うくらい恥ずかしい
123デフォルトの名無しさん
垢版 |
2025/03/28(金) 12:47:15.29ID:VPiwRdmL
>>106
石田晴久ですねわかります
2025/03/28(金) 13:28:02.98ID:v2Oxq7uo
今頃用語に難癖つけてる方が恥ずかしいわ
2025/03/28(金) 13:38:19.20ID:aE2BjRzu
>>118
トレイト視界がしっくりくる
2025/03/28(金) 13:49:09.58ID:pnjW0RJ6
用語も決まらないほど難解なので初心者お断り言語ってことでよろしく
金にもならんぞ
2025/03/28(金) 13:49:56.56ID:pnjW0RJ6
家族連れはGoでもやっときなさい
2025/03/28(金) 14:12:04.04ID:W4IssX7d
RustやC++がカバーするほとんどの利用領域でGoは役立たずで選ばれていない現実を見なよ
他の言語のスレを荒らすという人間としてしてはいけない醜い行為をせずにGoスレへ帰りなさい
今後ここでGoは禁止
どうしてもやりたい人は「Rust vs Go」スレでやりなさい
129デフォルトの名無しさん
垢版 |
2025/03/28(金) 14:21:30.27ID:WrR5QFM2
一般人向けのGolang
孤高の童貞向けRust
という住み分けで
130デフォルトの名無しさん
垢版 |
2025/03/28(金) 14:22:51.39ID:WrR5QFM2
Rustでドライバを書けるようにした時が
Linux凋落の始まりだった
と言われる未来が見える
131デフォルトの名無しさん
垢版 |
2025/03/28(金) 14:24:01.39ID:WrR5QFM2
Trait制約とか言って恥ずかしくないのかな
まるで分っていませんと
自分でいふらしてるようなもの
2025/03/28(金) 16:01:53.44ID:Hod7H+js
C並に標準化が進むと思いますか
2025/03/28(金) 16:12:38.49ID:FITPWZhb
Cはコンパイラ乱立で勝手な拡張方言で標準語を作らざるを得なかった負の側面
2025/03/28(金) 16:19:19.26ID:pnjW0RJ6
そこまで普及したらいいね。しかし人類には早すぎだからね
135デフォルトの名無しさん
垢版 |
2025/03/28(金) 21:41:02.63ID:NeeSelCN
ABIレベルで標準化されてるものはC以外に無いよね
実装はCである必要はない (C++やRustでも良い) けど、FFI用のインターフェースとしてのCの需要は無くならない
正直もう少し表現力のあるものが欲しいけど、これは10年やそこらでは変わらないよなあ
2025/03/28(金) 22:09:12.96ID:iNY6N2sw
cargo build時にlikerオプションとしてスペース込みのパス渡したいんだけど不可能?
137デフォルトの名無しさん
垢版 |
2025/03/29(土) 00:15:10.95ID:s9nxF7WE
不可能です
2025/03/29(土) 00:39:07.23ID:HRez4USp
Ferrous Systems が独自にまとめていた Rust の言語仕様が Rust プロジェクトに寄贈された。
2025/03/29(土) 13:40:51.83ID:CEPWRujK
「トレイト境界」に文句を言っているやつは先んじて翻訳公開して、「トレイト制約」を定着させないとな。
■ このスレッドは過去ログ倉庫に格納されています