探検


Rust part36

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2026/05/28(木) 22:26:08.72ID:nhboCF9V
公式
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 part35
https://mevius.5ch.io/test/read.cgi/tech/1774514307/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2026/07/12(日) 16:12:42.95ID:D6oRJmBt
今でも基本的な資料が C をベースに説明されていることはあるので文法の詳細までは不要にしても C を全く知らないでいるというのが難しいことはあるよ。
654デフォルトの名無しさん
垢版 |
2026/07/12(日) 16:42:50.01ID:laP+8RXQ
Cがあるのは怠慢でしかない
2026/07/12(日) 17:57:09.36ID:jP6GtkRH
BunがZigからRustに、わずか11日のバイブコーディングで完全移植されたけど
これって結局実験のための使い捨てじゃなくて、Zig版は放棄してRust版で開発していくんだな
656デフォルトの名無しさん
垢版 |
2026/07/12(日) 19:00:13.88ID:GcYTZxsx
どうして最初からRustで作れなかったんだろう…
2026/07/12(日) 19:55:26.18ID:R3cyjD4u
>>656
JavaScriptCore を中核にする前提だからというのが大きいらしい。
Bun 側のメモリ管理は JavaScriptCore 側と協調して性能が出るようにチューニングしたいという動機があって底レイヤのメモリ管理の細部をいじりやすいものを選んだら Zig になった。

でもそんな細部を手作業でいじってたら問題も起こるわな。
Bun がいきづまっていたのは Zig の問題ではなく Bun の設計方針が品質管理しづらい形だったってことだ。
方針を変えないなら Rust に変えたからと言ってそんなに良くならないと思うし、細部の制御を諦めるなら Zig でも十分なコード品質になったと思う。
658デフォルトの名無しさん
垢版 |
2026/07/12(日) 20:15:44.88ID:v8q9Sjsx
じゃあAIとRustは相性バツ牛ンってことで
659デフォルトの名無しさん
垢版 |
2026/07/12(日) 20:18:25.83ID:6dSrh3Uw
AI禁止?😨
ヒエッ😨
ガチガイジやんけ😨
2026/07/12(日) 20:22:19.11ID:MVcsLvMp
>>649
>>654
まあ、コンピュータの知識や既存資産の知識がなければそうだろうね
2026/07/12(日) 20:22:52.05ID:MVcsLvMp
知識がない状態でいくら言っても「ああ、こいつ何もわからんのか」と思われるだけだけどw
2026/07/12(日) 20:27:04.70ID:MVcsLvMp
>>651
PC向けならね

>>652
Cをアセンブリ言語に近いものと見ると足をすくわれる
Cには抽象という概念がある

マイコン用と教材用言語としては最適というのは同意

>>653
それはホントにそうで、Cを理解せずにはRustを理解するのも難しかったりする
2026/07/12(日) 20:30:02.68ID:MVcsLvMp
>>657
そもそもBunはシンプルに品質管理がダメすぎるんだよな
もともと不具合をものすごい量出していたし、Rustへの書き換えもやっぱり雑にやって問題を起こしてたし
2026/07/12(日) 20:35:40.62ID:jP6GtkRH
yt-dlpは利用するJavaScriptランタイムのサポートにあたって
BunがAnthropicにJoinしたことで、開発がClaudeによるバイブコーディング100%になるってんで
今後の品質向上に期待できないと切り捨てて、denoメインに切り替えてたな
2026/07/12(日) 20:43:26.73ID:MVcsLvMp
Denoメインなのは元からやぞ
あと、それ以前から期待できる品質があったとは思えん
666デフォルトの名無しさん
垢版 |
2026/07/12(日) 21:43:05.10ID:ccqQajlx
つまりRustは最高で
他はハナクソってことか😂
667デフォルトの名無しさん
垢版 |
2026/07/12(日) 21:47:19.19ID:ccqQajlx
ゴミ言語の知識とか持ってるだけで負債や😨
668デフォルトの名無しさん
垢版 |
2026/07/12(日) 21:55:06.33ID:1Rn3VSnp
Cとか言い始めたらジジイ
669デフォルトの名無しさん
垢版 |
2026/07/12(日) 22:34:13.47ID:BzHhysWV
まぁ、基本文法とかどの言語もCベースだし
C学べば他の言語も書きやすいよね

えっ、includeしなくていいの!?
メイン関数にリターンつけなくていいの?

とかはあるけどさ

だからこそRustのfor文は最初ナニコレしてた
2026/07/12(日) 22:57:30.94ID:1QkBFZ7P
Rustを理解できなくて問題山積みのC言語にこだわってるダメなプログラマーもいるよ
671デフォルトの名無しさん
垢版 |
2026/07/13(月) 00:09:14.88ID:20QlYRrh
cmake書かないでいいってだけで地獄を回避できるしrustでいい
2026/07/13(月) 00:29:29.04ID:J8tBklEt
Mesonがあるやん
2026/07/13(月) 00:42:06.76ID:llmW2skB
これでいいんでないの?
https://cabinpkg.com/
2026/07/13(月) 01:38:29.97ID:5sH5Cvg8
>>670
それはCもちゃんと理解できてないからやな
Rustに新しい要素なんか実際ほとんどない

>>667-668
まあCを知らないと新しいとか古いとかだけで語りたくなるかもな

>>671
別にCでも書かなくていいんやで
2026/07/13(月) 01:43:30.90ID:5sH5Cvg8
なぜかCMakeとC言語を区別できない人が多いけど、別物だからね
2026/07/13(月) 05:14:02.73ID:L/SYu8E/
>>674
C言語も楽しいけど本質的でない部分に多方面に渡って手間暇がかかるから捨てた
今となっては使うメリットが皆無
2026/07/13(月) 07:29:50.54ID:ZZgUOQpJ
言語としては C のメリットがゼロだと仮定しても C で作られたものや資料が今の瞬間にただちに消滅して Rust に置き換わるわけではないからな。
2026/07/13(月) 08:51:23.28ID:g1v5f3wA
Cはシンプルなので初修言語として工学部で大人気
679デフォルトの名無しさん
垢版 |
2026/07/13(月) 08:54:33.07ID:FSpLWmCt
教師「これはおまじないです」
2026/07/13(月) 12:17:53.46ID:1Np6UUvi
名前空間がないならマクロで識別子合成すればいいじゃない
2026/07/13(月) 13:26:12.79ID:u1fsuzip
Cは階層名前空間がないだけでなく
マクロが汚染マクロという欠陥もあって
2026/07/13(月) 13:33:20.18ID:yuDsM7nm
C(やC++)とcmakeとvcpkgをセットで入門しようとするのは良い心がけかと
一方でcmake書くのが地獄と言ってる向きはpreset以前の昔の話を引きずってるのかも
2026/07/13(月) 14:57:57.42ID:5sH5Cvg8
>>679
ゴミ

>>681
変なマクロ書くから……

>>682
C++ならともかくCだとあんなに複雑で重厚長大なビルドシステムはいらないことが多い
2026/07/13(月) 14:59:39.98ID:5sH5Cvg8
>>676
雑務が多すぎるってのはそう
わかり切ってることはコンパイラにやらせた方がいい
ただ、シェルスクリプトと組み合わせて小さな処理をやらせる程度ならRustを使う方が手間だったりするので、そこは使い方次第でメリットがないわけじゃない
2026/07/13(月) 15:00:53.60ID:5sH5Cvg8
>>677
それ

>>678
C言語というよりC抽象マシンモデルが優秀
世の中のコンピュータの大半の最小公倍数になってて、もっと色々抽象化した方が人には使いやすいんだけど、コンピュータ一般を学ぶならこれ以上ない選択肢になる
686デフォルトの名無しさん
垢版 |
2026/07/13(月) 16:53:10.87ID:g4r/A7hW
Cとかいう欠陥言語😨
2026/07/13(月) 17:07:01.20ID:ZZgUOQpJ
LLVM が汎用のコンパイラ基盤といいつつ C/C++ の抽象計算機のモデルに依存してるのは他に参考になるモデルが存在しないからというすごくシンプルな原因がある。
688デフォルトの名無しさん
垢版 |
2026/07/13(月) 18:12:24.41ID:wcsb7Me7
自閉症は長文と起源主張とキムチが多い
つねに後ろ向きなのだ
2026/07/13(月) 18:57:54.31ID:HxSiIqGd
一方ZigはLLVM依存を解消するのであった
690デフォルトの名無しさん
垢版 |
2026/07/13(月) 19:03:04.21ID:wbUiEDKP
脱LLVMというより下請なんで
新しいものが作られていく
2026/07/13(月) 19:04:59.91ID:kDRSFGc1
Rsutと比べるならHaskell
2026/07/13(月) 19:21:56.57ID:WmNCvL1M
Zigをよそ目にOdin-langが1.0になったね
2026/07/13(月) 20:10:22.04ID:5sH5Cvg8
>>686
何言ってんだこいつ

>>687
別にLLVMは C / C++ の抽象計算機のモデルには依存してないぞ
LLVM IRはCやC++とは別物
2026/07/13(月) 20:11:55.16ID:5sH5Cvg8
>>689
RustもバックエンドにLLVMを使わないツールチェーンは開発されてるし、C / C++ はGCCやMSVCなどLLVMに依存しないコンパイラが最初から多いしで、別に珍しい話でもない
2026/07/13(月) 20:13:02.21ID:5sH5Cvg8
>>690
というか、適材適所やね
LLVMはコンパイルが遅いが最適化が優秀、でも開発中は最適化はイマイチだがコンパイルが速いという方がうれしいこともある
696デフォルトの名無しさん
垢版 |
2026/07/13(月) 20:31:20.28ID:XyR0u5Tj
🥴
697デフォルトの名無しさん
垢版 |
2026/07/13(月) 21:13:53.31ID:20QlYRrh
🌚
698デフォルトの名無しさん
垢版 |
2026/07/13(月) 21:27:15.30ID:5B+YKcIA
makefile書く方が楽
CMakeListsは自由度高すぎ、設定多すぎて逆に覚えにくい
コンパイルオプションそんな色々いじらんて
699デフォルトの名無しさん
垢版 |
2026/07/13(月) 22:14:12.46ID:7hQsQB5I
cargoでいいじゃん
700デフォルトの名無しさん
垢版 |
2026/07/13(月) 22:21:56.84ID:7hQsQB5I
>>692
ZigもOdinもCと比べれば格段に良いけど
色んな安全性の保証がプログラマ頼みな点で中途半端な立ち位置のまま
Rustさえいなければ~!状態
2026/07/13(月) 22:35:20.85ID:IYFP4qZy
中途半端だといっそCで良くない?ってなるんだよな。コンパイラとかも組み込み含め揃ってるし。
今時バイブコーディングでコンパイラもライブラリも整備できるとはいえ、タダじゃないんだから
702デフォルトの名無しさん
垢版 |
2026/07/14(火) 00:18:07.85ID:LSxhNHSJ
Rustは次世代標準
簡単な話だ
703デフォルトの名無しさん
垢版 |
2026/07/14(火) 03:54:05.98ID:PDnGUZsx
っぱモズィラ・ファウンデーション製のラストよ
2026/07/14(火) 06:23:56.26ID:9TBUfdme
>>698
> コンパイルオプションそんな色々いじらんて
それらを CMakePresets.json や CMakeUserPresets.json に書いておいて使いまわすのですよ
基本 CMakeLists.txt にはプロジェクト名とソースファイル名、依存パッケージ関連しか書かない
2026/07/14(火) 07:00:38.28ID:0Anx911b
>>702
数十年後にはISO標準化されているかな
706デフォルトの名無しさん
垢版 |
2026/07/14(火) 07:02:55.43ID:RVJ2v08z
足を引っ張るそういうのは要らん
コンパイラ乱立も不要
707デフォルトの名無しさん
垢版 |
2026/07/14(火) 13:16:53.78ID:LSxhNHSJ
リストラされまくりエンジニアたちに新規開拓する余地が生まれるのがRust
2026/07/14(火) 14:10:53.49ID:/b2uC2Vr
>>707
流石に釣り針デカすぎw

>>701
それはそう
既存資産もあるしな
2026/07/14(火) 14:11:29.76ID:/b2uC2Vr
>>704
だったら読みやすく保守しやすいMakefileの方がよくないか
2026/07/14(火) 14:41:11.33ID:mEqkDKby
>>692
Odin のリリースは日付で書いてあるからバージョンナンバーがわかんねぇ
2026/07/14(火) 14:54:03.04ID:zfoKcE0l
>>709
cmake はクロスプラットフォーム、クロス IDE のためのメタビルドツール

しかも CMakeLists.txt と CMake(User)Presets.json をプロジェクトフォルダにおいておけば
VS なら勝手に cmake プロジェクトと認識するから VS 固有のソリューション/プロジェクトを生成する必要もない

Presetsで定義したビルドプリセット(通常は debug/release など)をプルダウンから切り替えるだけで自動的に cmake の configure が走って find_package に従って依存関係を debug/release でビルドしてくれる (しかも vcpkg がバイナリキャッシュしてるので2度目や他のプロジェクトで同一オプションでビルドしてあればそれが使われる)

同等の事をやったら「読みやすく保守しやすいMakefile」ではなくなるのでは?
(少なくともcmakeで生成したmakefileは読む気にならない)
2026/07/14(火) 15:10:09.52ID:mEqkDKby
cmake が発明されたのは autotools の屋上屋っぷりへの反省からだと思うのでメタにメタを重ねるような cmake のプリセットをあまり好意的には見れない。
必要な場面もあるとは思うけどどんなプロジェクトでも採用すべきというほどの標準という気はしない。
713デフォルトの名無しさん
垢版 |
2026/07/14(火) 15:26:49.65ID:096AxlcF
###結論
​ビルドシステムの進化は「開発プロセスの効率化」には貢献していますが、「安全なプログラムの作成」という目的において、C言語という言語仕様そのものが抱える負債(欠陥)を解消するものではありません。
​Rustなどのモダンな言語が「なぜあそこまでビルドシステム(Cargo)と型システムを密結合させているのか」を考えると、**「ビルドシステムだけで安全を担保するのは不可能であり、言語そのものが安全でなければならない」**という現代の結論が浮き彫りになります。
​「Cの欠陥から目を逸らすための複雑化」に対して、どれだけ冷静でいられるかが、エンジニアとしての力量を分ける分岐点かもしれませんね。
2026/07/14(火) 15:55:08.92ID:/5FosIRr
Rustは最初からごちゃごちゃと複雑化しているので安心
715デフォルトの名無しさん
垢版 |
2026/07/14(火) 16:00:13.70ID:lHRa4Hv9
Rustは完成型
認められない奴らは老いぼれか障害者
2026/07/14(火) 16:12:07.62ID:pXXcHuDG
じゃRustのコア開発者は全員老いぼれか障害者だな
2026/07/14(火) 16:14:57.49ID:Pd52edd3
今まで避けてた人はmodern cmakeから始められるのがラッキーだと思うけどなあ
この期に及んで必要性が分からないと言ってる人がいたら、あっ、となる
2026/07/14(火) 16:20:20.63ID:mDm05etA
>>717
https://xkcd.com/927/
719デフォルトの名無しさん
垢版 |
2026/07/14(火) 16:25:58.52ID:rNodqxiL
bacon→Makefile(スクリプトとか挟む)→cargo xtask(出来るだけシンプルに)

今のところのお気に入り
2026/07/14(火) 16:53:22.96ID:/b2uC2Vr
>>711
ホームページビルダーで生成したHTMLは読みにくいから、HTMLはシンプルでも読みやすくもない、みたいな話をされても困る
当たり前だが、CMakeを使わなくてもMakefileできれいに書けるケースも多いという話をしている以上、CMakeが生成するMakefileの話はしていない

>>712
あくまで複雑なプロジェクトを何とか扱うための仕組みであって、シンプルなプロジェクトで使う意味はないんだよな
2026/07/14(火) 16:56:04.26ID:/b2uC2Vr
>>713
Rustの言語仕様はビルドシステムと関係ないし、C言語も同じく関係はない
君はそこを切り分けていないので会話が成立していない

>>714
Rustの考え方を知らずに記法だけ丸暗記しようとするとそう感じるかもしれないが、実際はそんなことはなく、シンプルに作られている
2026/07/14(火) 16:56:52.17ID:/b2uC2Vr
>>715
当然ながらそんなわけはないし、Rustは安定して開発が高コストという重大な欠点がある
2026/07/14(火) 16:58:18.74ID:/b2uC2Vr
>>717
モダンになったら必要だ、なんて話にはならないし、前よりよくなったことと、必要になることとは別問題
お前は前よりおいしくなったと言われたらうんこ味のカレーを買うのか?
2026/07/14(火) 17:00:43.00ID:/b2uC2Vr
基本的にCのプロジェクトならよほど大きくない限りMakefileやバッチファイルで管理は事足りるし、C++くらい複雑になればCMakeも必要になることは増えてくるというだけのこと
Rustの場合Cargoがその役割を担えるし、扱い方もシンプルなのでわかりやすいが別にCargoほど大仰なものは必要ない、小さなプロジェクトもたくさんあるだろう
2026/07/14(火) 17:00:45.86ID:BZzxdZ6J
地雷の見える化システム
2026/07/14(火) 17:03:09.34ID:/b2uC2Vr
その上で、C++のエコシステムの複雑さと低レベル(抽象化が提供されていないという意味)さの結果として、CMakeは複雑になっていて、多少マシになったとはいえ多くのCのプロジェクトでは不必要なほど面倒が多いのは変わっていないというだけの話
2026/07/14(火) 17:04:17.41ID:/b2uC2Vr
>>725
そういう意味ではrustcは優秀
でもビルドシステムはあまり関係ない
728デフォルトの名無しさん
垢版 |
2026/07/14(火) 17:21:33.40ID:vsCy26mK
>>725
ふーむ...🤔
2026/07/14(火) 17:45:20.52ID:b1tMU48K
「ある種」の可視化ツール
cargoと違って強制力はなくて半分は協調性だからね
2026/07/14(火) 18:13:02.53ID:/MVIu+e2
cargoの強制力ってなんやねん
2026/07/14(火) 20:02:34.60ID:UctLaSfl
Rustは様々な言語機能が滑らかに噛み合っていて美しい
2026/07/14(火) 20:04:30.67ID:mDm05etA
Rust のプロジェクトで他の言語を混ぜたりするような事情もないならあえて Cargo 以外のビルドツールを使う選択はとり難い。
ある程度の人数が関わるプロジェクトで Cargo を避けるならよっぽどの理由がないと納得させられない。
強制力というか Cargo を使うべきという圧力はあると思うよ。
2026/07/14(火) 20:23:32.61ID:JM/WrjFy
>>732
Cargo避ける、って実質的に無理では?
依存外部crateを再帰的に全部ローカルcrateにするって事?

makefile爺さんはC/C++依存ライブラリは予めシステムグローバルにインストールかgit submoduleにしてください、と言うスタンスだろうか
734デフォルトの名無しさん
垢版 |
2026/07/14(火) 20:31:07.20ID:Q2M/rCRb
料理で調理器具使いませんと言ってるようなもん
2026/07/14(火) 20:48:18.86ID:qGvu0ucY
キッチンなんて複雑で重厚長大だよな
2026/07/14(火) 21:01:00.85ID:mDm05etA
>>733
>>730 に対する反応なので強制力とは何のことを言っているのかを説明してるだけだよ。
まさにあなたがそう考えるように Cargo は実質的に強制されてる。
737デフォルトの名無しさん
垢版 |
2026/07/14(火) 21:02:52.63ID:wHnNd3Er
Cargo=Rustだとわからん障害者はCでも使えばええんや
2026/07/14(火) 21:21:20.24ID:RYrtbtfA
強制って言うと悪だと捉えられがちだが
Cargoみたいな役割のところが乱立したところで別にいいことないしな
739デフォルトの名無しさん
垢版 |
2026/07/14(火) 22:04:20.38ID:yjawIBDT
CARGO_HOME で ls -l すると
全てシンボリックリンクリンク

cargo -> rustup
cargo-clippy -> rustup
cargo-fmt -> rustup
cargo-miri -> rustup
clippy-driver -> rustup
rls -> rustup
rust-analyzer -> rustup
rust-gdb -> rustup
rust-gdbgui -> rustup
rust-lldb -> rustup
rustc -> rustup
rustdoc -> rustup
rustfmt -> rustup
rustup

つまりcargoなど公式ツールは全て同じ実体
rustupもコンパイラrustcもcargoと同一だとわかる
2026/07/14(火) 22:18:14.85ID:kFJoOebr
busyboxみたいにマルチコールバイナリになってるのか
741デフォルトの名無しさん
垢版 |
2026/07/14(火) 22:20:30.08ID:PDnGUZsx
makefile cmakeとか乱立してる時点でうんこなのね
2026/07/14(火) 22:28:27.59ID:NEaZ2jha
>>740
マルチコールっていうかプロキシだね
実体は当然別にある
2026/07/14(火) 22:34:47.84ID:kFJoOebr
>>742
なるほどなあ、賢いやり方やね
2026/07/14(火) 22:46:25.15ID:/b2uC2Vr
>>737
実はRustでも直にrustcを呼ぶことはできるんやで
2026/07/14(火) 22:47:40.40ID:/b2uC2Vr
>>741
そもそもどれも言語仕様と結びついていないというだけの話
好きなの使えばいいのにCMakeじゃないとダメだと思いすぎなのがいけない
2026/07/14(火) 23:38:59.13ID:5yUq16/4
>>739
>つまりcargoなど公式ツールは全て同じ実体
>rustupもコンパイラrustcもcargoと同一だとわかる
ネタとして言ってるんだろうがこういうの真に受けちゃうやつもいるからな
747デフォルトの名無しさん
垢版 |
2026/07/15(水) 00:43:43.39ID:owAddKKJ
cmakeにしても数あるコンフィグツールの一種でしかないから持ち上げるな
プロジェクトごとに採用の是非は決めればいいし、おすすめでも何でもない
なくても困らん
2026/07/15(水) 02:09:23.01ID:PFPK0g3k
ほんそれ
2026/07/15(水) 02:44:41.41ID:FRpKzQU/
>>742
実体は別に存在しない
Rustコンパイラrustcとcargoはもちろん同一バイナリ
2026/07/15(水) 08:20:25.56ID:I3iZ1+65
どっちでも良いならcmakeにするのが今現在の協調性
Qiita/ZennでC/C++プロジェクトのgithubレポを公開してる人が
cmake一つも使ってなくて全部makefileだと協調性ゼロだと思われる
2026/07/15(水) 08:30:24.92ID:q+/BDG6O
まあ昔からVisualStudio用のsolution形式だけで公開されたら利用できる環境が限定されて困ったことある
makefile限定公開も今やその扱い
2026/07/15(水) 09:32:13.61ID:PFPK0g3k
>>750-751
Cのプロジェクト見たことないのはわかった
■ このスレッドは過去ログ倉庫に格納されています

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