Rust part34

1デフォルトの名無しさん
垢版 |
2025/11/27(木) 12:25:23.76ID:4JaxkBD4
公式
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 part33
https://mevius.5ch.net/test/read.cgi/tech/1755247770/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/12/13(土) 00:03:09.62ID:1Rkfvz+k
>>143
>並行処理=同時進行するが同時に実行されることはない
>並列処理=同時に実行されるためメモリ競合などの対策が必要
一般的な定義からすると↑これはどっちも間違ってる
並行処理は同時実行されてる部分もあれば同時実行できない部分ももある
同時実行できない部分の制御のため競合対策が必要

並列処理は同時実行可能な処理を指すので競合対策は不要
同時実行できない処理を並列処理とは普通は言わない
2025/12/13(土) 00:07:42.28ID:TTFtgmCI
>>151
wikipediaの記述やそこで引用している参考文献が正しい
あなたが間違っています
2025/12/13(土) 00:07:52.21ID:1Rkfvz+k
>>150
>単なるカウンター変数のみでよい
それはカウンター変数をミューテックスとして利用しているってことなんだよ
>>149をもう1回読んでね
2025/12/13(土) 00:36:34.04ID:1Rkfvz+k
現実的には単なるカウンター変数をミューテックスとして利用するだけではダウンローダーに必要な機能を満たせないからキューイングできるタイプの非同期ミューテックスを使う
2025/12/13(土) 01:22:57.78ID:O7dPDRw7
>>153
いいえカウンター変数とmutexは異なります
mutexは他のスレッドがロック中にスレッドを待たされる機能と利用が可能になったときに再開させる機能を伴います
その効率のためOSが提供するfutex機能を用いてmutexを実装する環境が多いです
2025/12/13(土) 03:20:12.64ID:diqjnlrE
>>147
参照された記事には並行処理における競合対策は不要と記載されていました?

また、「コンピューティング」という、物理、実装を意識するレベルでの具体的差異をこちらは否定していない
その前段となる概念レベルの関係についての言及であり

>Concurrency is a broader concept that encompasses several related ideas, including:
>Parallelism (simultaneous execution on multiple processing units). Parallelism executes tasks independently on multiple CPU cores. Concurrency allows for multiple threads of control at the program level, which can use parallelism or time-slicing to perform these tasks. Programs may exhibit parallelism only, concurrency only, both parallelism and concurrency, neither.
https://en.wikipedia.org/wiki/Concurrency_%28computer_science%29#Related_concepts

実際に並行、並列処理の実装にあたっては、物理、ハードウェア的な制約に基づき、当然、両者は弁別される
言うまでもないがシングルコアにて並列処理は実装できまい
さりとて逆もしかりとならないわけで
前者は後者を包含している、後者は前者の下位概念であり、具体的な実現手段
「並行 ⊃ 並行、並列」のように概念のポケットに、それとは別に具体的技術としての「並行」「並列」が入るイメージ

そして繰り返すけど、本件論点は競合考慮、ミューテックスの要否では?
並行プログラミングする際、これを不要とする立場?
2025/12/13(土) 07:39:32.48ID:seiImwq0
>>156
並列を用いない場合=マルチスレッドを用いない場合=シングルスレッドの場合、
並行処理でメモリアクセスが同時に実行されることはないためメモリ競合は発生しない。
つまりカウンターやフラグなどあらゆる変数についてMutexを用いる必要がない。

これはJavaScriptだけでなくRustでシングルスレッドで非同期タスクを並行処理する場合も同じ。
具体的にはtokioのspawn (並行&並列)はSendトレイト境界があるため変数共有にMutexなどが必須だが、
spawn_local (並行のみ)はSendトレイト境界がないためMutexは不要という形で表れる。
158デフォルトの名無しさん
垢版 |
2025/12/13(土) 08:07:26.77ID:xrC7LiGl
関連型ってT<U>みたいな型依存型ができないからその代用だよね
2025/12/13(土) 10:56:12.72ID:vOZmwqT4
シングルスレッドでも2つの非同期処理がawaitを挟んで同じメモリを参照・更新する時は
data raceのリスクがあるから気をつけてくれ
Rustの場合は&mutが他の参照をブロックするから問題になりにくいけど
160デフォルトの名無しさん
垢版 |
2025/12/13(土) 11:00:34.93ID:/DhArST+
日本語より
concurrent
parallel
distributed
で議論した方が良いと思うの
https://zenn.dev/koron/articles/3ddcaaeae37f9befdf70
2025/12/13(土) 11:37:19.65ID:uGVM51WN
並行はヘテロ
並列はホモ
162デフォルトの名無しさん
垢版 |
2025/12/13(土) 12:58:20.04ID:8qQHr6Hn
同時アクセスの可能性があるものにmutexでロックかけろってだけじゃないの
2025/12/13(土) 14:26:19.82ID:vEYY11o1
>>162
原則としてはそう。
ただ、データ競合は阻止できてもデッドロックは阻止できないし、性能的に改善できる余地もあるから唯一の正解というわけではない。
2025/12/13(土) 14:26:52.20ID:DjrUGhug
>>162
Mutexは別々のスレッド同士が同時アクセスするデータ競合を防げるよ
通常のstd::sys::Mutexだと既にロックを持っている同じスレッドでロックしようとすると動作の保証はなくてパニックするかデッドロックするかなど環境依存なので用いてはダメだけど
つまりそれはマルチスレッド用
2025/12/13(土) 14:48:01.82ID:vvvRno5n
一般的なアプリケーションプログラミングにおいては、排他制御の対象はデータというよりコードの特定のセクションであることが多い
当該セクションで扱うのが単一のデータストアである場合はそのデータストアに対する単純なロックに帰着するが、実際にはそうでない場合も多い
166デフォルトの名無しさん
垢版 |
2025/12/13(土) 15:10:49.43ID:6mP4NQXw
ケントンプソンに書き直してもらったほうがいいだろこの言語
2025/12/13(土) 20:30:59.61ID:CZ2kQ+mp
自演するにしても、逆に自演ってバレバレになる1レスごとルーパチじゃなく
せめてWi-Fiとスマホ回線でやればいいのに
2025/12/14(日) 00:57:37.50ID:xj54TDj4
>>157
まず初手の等式がぶっ飛んでいる
並行、並列という処理の性質とその処理を実際に行う際に用いるモデルの話は直交概念、因果の幅跳び甚だしい
「並列でない」ことによって、ただちに「マルチスレッドでない = シングルスレッドである」ことは定まらないため、「シングルスレッドで共有メモリを同時に操作可能な実行主体が一つしか存在しない」ことは担保しえない
ミューテックスの要否は「共有メモリに対して複数の実行単位が論理的に同時アクセスしうるかどうか」で、「物理的に同時実行されない」ことは必ずしもメモリ安全性を意味しない
すなわちコア数(並列か否か)とマルチスレッドのいかんは別議論
並行処理の実現手段としてマルチスレッドを用いたならば、メモリ競合は生じるし、したがってミューテックスも要検討
重ねるけれど「シングルスレッドである」とする際に、それを前提するのが「並行処理である」からというのは因果の車がパンクしている
169デフォルトの名無しさん
垢版 |
2025/12/14(日) 06:59:12.58ID:fsdEVE/K
>>168
Rustでは>>157のように実装されているのだから君が間違ってるよ
2025/12/14(日) 07:46:26.10ID:xj54TDj4
>>169
具体的に何が >>157 のように実装されているという話?
こちらの間違っている点はどこ?
171デフォルトの名無しさん
垢版 |
2025/12/14(日) 08:13:24.71ID:fsdEVE/K
>>170
明確に>>157に書かれているのに理解できないならRustを使ったことすらないんのかな
長文で屁理屈を連投するけどRustの話が全く出てこないので怪しいと思っていたけど
2025/12/14(日) 09:19:18.51ID:xj54TDj4
>>171
明確に前半後半で議論が分裂しているね
そして >>168 の指摘は前半の並行、並列、スレッド、競合、ミューテックスなどへの胡乱な認識に基づく主張、説明に対するもので、後半にて言及されてる「シングルスレッド」などに見られる条件下を前提としたケースについては触れていない

前半部分の指摘については既述のとおり
後半については指摘というより、並行、マルチスレッドなどの話で「Rustの話が出てこない」という反論かます時点で概念理解は推して知るべし

おそらく経験した個別ケースを安易に一般化してしまっており、自身の使っている用語が概念、実装、結果のどこに属しているか意識もあまりしていないのでは
だから乱暴な等式を使い、平気で一般化してしまう
Rust(tokioのexecutor)に見られる「設計上の制約(単一スレッドであることを保証)」は、「並行処理」一般とは議論のレイヤがズレている

そちらの議論に合わせるとすれば、spawn_localがmutex不要なのはexecutorが単一スレッドであることをtokioが保証しているからであり、「並行処理だから」が理由ではない
173デフォルトの名無しさん
垢版 |
2025/12/14(日) 09:48:55.96ID:44yyY/m/
>>172
非同期タスクで並行処理するためのランタイム基盤がRustのtokio
tokioでも並列処理をしない限り並行処理だけならばメモリ競合は発生しない
そのためミューテックスも当然必要ない
これは言語やランタイム基盤の種類に関係なく常に成立する
2025/12/14(日) 10:39:55.53ID:UGesTTaV
相変わらず複数データの排他制御を理解していない複おじ
2025/12/14(日) 10:52:14.74ID:TOxv8/vf
>>173
mutexは必要がないだけでなく使用禁止が正解だよ
同じOSスレッド同士でmutexは機能しない
2025/12/14(日) 11:11:39.26ID:7VXp8ta2
複数データの排他制御ってなんの話?
2025/12/14(日) 13:10:49.83ID:O1BhnRhB
LinuxついにRust公用語に
2025/12/14(日) 14:04:43.97ID:xj54TDj4
>>173
だから安易な一般化
「並行処理 = 非同期処理」と認識してない?
そちらの主張はtokioをはじめ、その中においての業界標準、常識であって、外に出たら通用しない
「並行処理」におけるメモリ競合の有無やミューテックスの要否じゃなくて、それを実現する実装手段の内側世界における議論

それらを前提してるから、「並行処理 = シングルスレッド = 競合しない = ミューテックスは必要ない」と因果を逆立ちさせてしまう
>>157 のレスを引くなら「並行(非並列) = シングルスレッド = spawn_local = Sendがない」ではなく、「spawn_localを選ぶ = tokioがシングルスレッドであることを保証 = スレッド移動がないためSend不要 = 結果として並行(非並列)になる」が正しい因果

設計段階で「並列か否か」をまず決めて、それに応じたexecutorを選択し、その結果、実装者の期待どおりに「並行(非並列)」or「並列 & 並行」となるわけで
これが本来の思考、理解の順序であって、逆にするから概念自体が胡乱げになる

「非同期処理」に限るのであればいざ知らず、そうでないなら、つまり「並行処理」一般に議論のスコープを広げるのなら、そちらの因果理解は破綻する
2025/12/14(日) 15:01:36.46ID:4LwbsUy1
>>178
長文くん邪魔だからさ
これ以上中身のない妄想の机上の空論を続けるのではなく、
キミが言う並行処理を実装してるクレートか何かをまずは持ってきなよ
2025/12/14(日) 16:05:54.67ID:+m3/RUXs
もう並行処理専用スレを作って移動してほしい
2025/12/14(日) 18:14:00.68ID:dzhQifsq
長文は読んでないが>>157の複おじの主張に沿うと
実行環境がシングルコアならマルチスレッドでもマルチプロセスでも真の並列ではないから
「カウンターやフラグなどあらゆる変数についてMutexを用いる必要がない」ってことだな

あほらし
2025/12/14(日) 18:21:41.85ID:dzhQifsq
今回得られた結論は以下の2つ

1. 「JavaScriptはシングルスレッドだから排他制御は要らない」などと言う人は排他制御を全く理解していないということ

2. 概念と実装の区別ができない人はその概念に対する理解が決定的に欠如しているということ


複オジ先生、反面教師役お疲れ様でした。
2025/12/14(日) 18:51:23.07ID:zM6OZsQF
複おじは日下部陽一先生と知りあえば仲良くなれると思う
2025/12/14(日) 19:19:56.69ID:mP2ZsAYG
>>181
>>182
あなたは勘違いしてるから解説書や仕様書などまずは基本を勉強した方がいい
ミューテックスはスレッド間もしくはプロセス間で使われると明記されている
そして同一スレッド内でミューテックスを用いた場合の動作はは環境依存になる

Rustの標準ライブラリのMutexでも同様でロックされている状況にて同一スレッドでロックを試みた時の動作は指定されず関数から戻ってこないままpanicやdeadlockなどになりうると明記されている
つまりMutexはシングルスレッド内で用いてはいけないものなのだ
2025/12/14(日) 21:37:57.47ID:tGd21ggn
シングルスレッドだからメモリ競合は発生しないって主張が地雷なんだよな

複数の非同期処理で共有してる&Cell<T>の値はawaitの前後で書き換わってる可能性があって
await中の別処理での変更を無視するとマルチスレッドのメモリ競合と同じ不定状態になる
この場合シングルスレッドだからMutexは必要ないというより使えないんだけど
Mutexが必要ないor使えないからメモリ競合は存在しないって結論出すのはやめてほしい

変なタイミングでawaitを挟まなければ回避できる話だから大した問題ではないけど
問題の可能性を理解せずに「メモリ競合は存在しない」って信念を持たれるとこわい
2025/12/14(日) 22:10:35.13ID:yhv8JhFY
>>185
それはメモリ競合とは言わない
そこにメモリ競合は存在しない
2025/12/14(日) 22:37:59.93ID:xPG6+apI
まーた副クン一人で頑張ってるの?
IDコロコロして頑張るねえ
2025/12/14(日) 22:56:57.21ID:j10MZCpM
複数CPUからの同時アクセスを制限するものだけを Mutex と呼ぶなら
tokio::sync::Mutex についてはどうなんだ?
これはシングルスレッドのランタイムでも使われるものだし、名前の通り Mutex と呼ばれるものの一種だと思うけど
2025/12/14(日) 23:39:46.59ID:/lebwabc
>>185
>変なタイミングでawaitを挟まなければ回避できる
OSが複数スレッドの実行をインターリーブするのと同じで
タスクも効率や公平性のためにawaitを入れてインターリーブさせるべきケースというのがある
>>149のダウンローダーの例とかね
2025/12/14(日) 23:49:39.40ID:TgyZENYv
メモリ競合・データ競合は複数のスレッドもしくは複数のプロセスが互いにどこを実行している知らなくて制御できなかったり不意打ちで切り替わりえる状況で起きるんだよ

>>185
一方でそのケースはシングルスレッドで利用していればそんなことは起きないためデータ競合ではないね
awaitから戻ってきたら値が書き換わっていたというのは関数呼び出しの連鎖から戻ってきたら値が書き換わっていたのと同じようなこと
制御できない知らぬ間に値が書き換わるわけではないためデータ競合とは呼ばれない
2025/12/15(月) 10:37:47.15ID:NfYVjfv5
競合の話となると特に造語が捗るようですねえ

メモリ競合もそうだけど
データ参照の競合って何だったの?
https://mevius.5ch.net/test/read.cgi/tech/1722354386/966-983
2025/12/16(火) 00:58:10.28ID:W/QCw6TP
さてと
linuxカーネルはrust化されないとか言ってた低学歴在日朝鮮人の恥ずかしい書き込みを発掘するか
2025/12/16(火) 01:13:24.49ID:cIHp8Olv
Linuxって使いにくい 古~いUnixを未だにひきずってるから
Linuxに拘る必要あるんだろうか?
もういっそのことすべてを新規設計にしてLinuxに代わるオープンソースOSにして欲しい
モデルにするのは…MSはMSで変に使いにくくしていってるとこあるから、この両者の悪所を全部取り除いたやつにして欲しい
2025/12/16(火) 01:14:30.50ID:mQYReazf
複おじみっともないからそういうのやめなって
2025/12/16(火) 01:23:26.93ID:nHAkm4Ue
排他制御で恥を晒した某オジさんがいつものように別のネタで話題をそらしたいわけですね
2025/12/16(火) 01:36:51.09ID:x/sZ4m7A
Rustがこんなにも多くのアーキテクチャを葬ってしまうのか

https://x.com/ebisan2015/status/1999437822798045373
197デフォルトの名無しさん
垢版 |
2025/12/16(火) 03:40:58.95ID:6mYT8Axt
unix作者はgo作ったしlinuxメンテナに入れて上げたらinじゃねーの?
2025/12/16(火) 04:03:56.34ID:W/QCw6TP
>>196
s390とホビーじゃねえぞ
2025/12/16(火) 16:45:22.50ID:qwpCJpGr
Qiitaスレに逃げてんじゃねーよ
2025/12/16(火) 19:10:40.61ID:SqwmBjPQ
>>193
firefoxすらRustで書き直せないのに無理
ていうか、Rustはオワコン
2025/12/16(火) 19:45:33.35ID:fxmzBDbu
Go のランタイムがやってる平行処理 (goroutine) は本当は OS でやりたかったが Linux にかわる OS を作るのは非現実的だから諦めたとは聞いたことがあるな。
単純な話としてアプリケーションが Linux の仕様に依存しきっているから Linux のしがらみを捨てた新しい OS を作ったら全てのアプリケーションが作り直しだ。
インフラは正しくあることよりも安定していることが重要であるという Linux 哲学により、改善によって既存のアプリケーションが動かなくなるならその改善はしないことになっている。(深刻な脆弱性ならやむを得ず修正することはある。)
つまり Linux は長期的に安定してバイナリ互換性を維持していて、更にはこれからもそうであると信じられているから今の地位にあるってことだ。 Windows もそう。
機能・性能の良さより長期的な信頼が大事で、それを得るのは本当に困難な話。
2025/12/16(火) 20:04:03.07ID:VMokbSN7
新しいOSに引継ぎのためのWSLのようなのを積んじゃえば
2025/12/16(火) 20:08:57.42ID:l9eOXZHT
BeOSやTRONのようなのでもよかったんだけどなあ
BeOSはなぜかすぐに消えちゃったね、TRONはお国の事情で…
2025/12/16(火) 20:25:59.95ID:YnU0BKmn
>>201
goroutineはプリエンプティブつまり強制中断スケジューリングなので個別にスタックを持たなければいけないけど
Rustの非同期タスクはawaitでスケジューリング切替なのでyield_now等で自分で制御できるメリットとスタックを持たなくていいメリットがあるね
2025/12/16(火) 20:51:19.88ID:r3w6sfJ0
おじはなんで188だけガン無視なの
2025/12/16(火) 21:55:03.07ID:33G9TuJX
もう敗北を認めてるからでしょ
2025/12/16(火) 22:02:24.31ID:o613HmUP
Rustに勝つのは無理すぎる
2025/12/17(水) 00:04:52.78ID:BcBC1nAJ
せっかくノリノリで自演再開したのに蒸し返された途端に止まるの笑える
2025/12/17(水) 00:05:33.31ID:IQqRXVk7
どういう指標において?
例えば「開発者の人口の多さ」なら主要言語の中では下位だし、そんなもの切り口によりけりだろ
210デフォルトの名無しさん
垢版 |
2025/12/17(水) 00:37:34.86ID:9IMomu8g
tronはスウィッチ2のコントローラで活躍しとるでぇ🧐
2025/12/17(水) 09:00:54.55ID:XKSP57jx
活躍ではないかな
2025/12/17(水) 13:00:34.90ID:ZnlCz4EL
NeXTは死にかけのところをあやうく拾って貰えた
BeOSの方がmac後継の有力候補とまで言われていたのに
ここまで立場がひっくり返るとは
2025/12/17(水) 13:20:26.44ID:DM2ngHpZ
マイナーアーキテクチャ対応はgccrsプロジェクトの成否にかかってると思うんだが
現状どうなってるの?
2025/12/17(水) 14:23:26.87ID:t+T8cWGp
そんなもんお荷物になるだけだから失敗してくれた方がいい
最新エディションへの対応が遅れる(or放棄される)のは目に見えていて、
ライブラリがそれに引きずられて最新エディションへの移行を渋るようになれば、
俺達イケイケ最先端ウェーイでやってきたRustコミュニティの自尊心に致命的なダメージを与え、開発者離れを引き起こすことになりかねない
2025/12/17(水) 16:13:18.06ID:0zsY87I/
アーキテクチャのLLVM対応はベンダーorメーカーの責任では
売りたいなら真っ先に用意するだろうし時代遅れでコストに見合わなければ切り捨てられる
2025/12/17(水) 19:33:27.44ID:ujCMDiXv
というかgcc対応の本命はrustc_codegen_gccの方じゃない?
最近はRust本体のCIでもテストされるようになってきたし、rustupでの配布も計画されている
2025/12/17(水) 20:42:52.22ID:DzI4E+Zk
>>216
rustc_codegen_gccはrustcのバックエンドとしてLLVMと同様の立ち位置なんだよね
だから>>214の問題は起きないメリットが大きい
2025/12/17(水) 22:06:20.53ID:IQqRXVk7
bincode がサポート終了になったみたい
それなりに広く使われてるクレートでも突如消えることってあるんだな、と改めて思う…
2025/12/17(水) 22:27:57.16ID:GIcNPYi1
メンテナの一人が他のメンテナに相談なく脱GitHub作業を始めて履歴の書き換えとかをやりだして揉めたけど
その渦中のメンテナがトランスジェンダーのポリコレだってことで
実名と住所を晒されて、責任取ってプロジェクト自体終わりってことになったのか
2025/12/17(水) 22:29:06.78ID:JJtTc48Y
devでtestで用いてるクレートが多いな
2025/12/17(水) 22:31:21.65ID:WBnWSF9Z
>>217
rustc_codegen_gccがお荷物になってライブラリではなくてRust本体への変更が遅れるデメリットはある
2025/12/17(水) 22:55:48.90ID:7H2QU0IP
そこはこれまでもrustcとLLVMとの間の調整でやって来たことだから新たな影響は限りなく小さい
一方でRustの仕様追加変更や標準ライブラリの追加安定化などは当面rustcまわりでの独裁決定事項であることが成長中のRustにとって好ましい
2025/12/17(水) 23:05:52.77ID:pnFaSaz7
bincodeの件、斜め読みしたけど、こんな感じじゃない?

1. 生成AIのクソissueにブチ切れる
2. 脱GitHubを実行
3. ついでに、トランスジェンダーの関係で改名した新しい名前を使って過去のコミットを書き換える
4. しばらく誰も気づかない
5. 誰かがコミットIDが書き変わってることに気づく
6. うわーサプライチェーン攻撃だーと大騒ぎする
7. 騒ぎの中で、作者の実名や住所を公開する奴が現れる
8. 作者がブチ切れて、メンテナンス終了を宣言
9. ついでに、作者名の欄を独立して編集できないcrates.ioがクソ、と意見
2025/12/18(木) 00:40:08.71ID:SXyMexjv
>>221
RFCが承認されてから10年経っても実現できない機能がいくつもある言語だからな
その程度のデメリットはいまさらだろ
225デフォルトの名無しさん
垢版 |
2025/12/18(木) 12:26:48.37ID:nouCCsxV
ハッシュマップってハッシュ値を保持して値を調べるんじゃなくてキーも保存するんだな
保存したくない場合はキーを完全ハッシュ値にしてハッシュ値をキーにしないとだめだな
2025/12/18(木) 13:24:31.83ID:CQ9HORaM
キーを保存したくないならHashSetの方があってそう
値にEqが必要だけど完全ハッシュより現実的
2025/12/18(木) 14:39:08.80ID:XpyRX9NB
恐ろしい誤解だなと眺めてたら
さらに恐ろしいのが来た
2025/12/18(木) 15:01:44.44ID:MGFN0lYz
>>225
HashMapはハッシュ値を保持しない

>>226
HashSetもキーを保持する
2025/12/18(木) 15:07:04.67ID:CQ9HORaM
この場合のキーはHashMap<K, V>のKのことだろ
HashSet<T>のキーってなんだよ
ハッシュ値のこと?
2025/12/18(木) 16:23:43.15ID:VAIdWToM
検索に使うオブジェクトがキー。
HashSet は値が常に () であるような HashMap だと説明されてる。
231デフォルトの名無しさん
垢版 |
2025/12/18(木) 16:51:07.77ID:nouCCsxV
普通のハッシュマップは何もしないハッシャーを実装すれば出来るな
2025/12/18(木) 19:13:42.74ID:fm5KR8ce
Rustの前に基本情報あたりを取る勉強したほうがいいんじゃないか
古臭いのが多いとはいえ応用は基礎の積み重ねの上にあるからな
233デフォルトの名無しさん
垢版 |
2025/12/18(木) 19:42:58.02ID:Wqs3m317
rustってグローバル変数が使えないんだよね。dfsつらくない?
2025/12/18(木) 19:46:33.16ID:vUWlsjsI
DFSのためにグローバル変数??
プログラミングを基礎からやり直したほうがいいぞ
2025/12/19(金) 10:28:35.58ID:gzseDVjE
Rustちょっとビルドの度に数分単位の時間掛かるのなんとかならんのかね
多分プロダクションビルドだけでやればいいような最適化とか毎回回してるよねこれ
2025/12/19(金) 10:31:57.30ID:+3c/moZi
>>235
マクロのせいでしょ
2025/12/19(金) 12:08:39.25ID:PZAfhfPm
でかい依存ライブラリのリビルドが必要になったならまだしも自分のコードのインクリメンタルビルドだけで数分もかかるようならマシンのアップグレードを検討したほうがいいかもしれない
2025/12/19(金) 12:10:44.45ID:AoLX/WrE
Windowsならアンチウイルスのせいかもね
2025/12/19(金) 12:20:12.19ID:HjsWPX9f
>>235
少なくともデバッグビルドのデフォルト設定では最適化は控えめだよ。
単純にリンクが遅い傾向にある。
Rust プロジェクトの典型的な設計がリンカには負担がかかってしまう要素が多いらしい。
変更が少しだけでもリンカの仕事の量は特に変わらないし。

インクリメンタルリンクをサポートしたリンカ Wild が開発中で、開発中のリンク (修正を少しだけした場合のリンクしなおし) を爆速にする計画は進んでいる。
インクリメンタルリンクは構造がかなり複雑になるので複雑な処理と速度を両立できるのか疑問視されていて従来のリンカ開発者は消極的だったんだが
Rust でなら複雑さと性能を両立したリンカを書けるという自信があるらしい。
2025/12/19(金) 12:24:59.93ID:AoLX/WrE
C#みたいにプロセス起動したままホットリロードできるようになるのはいつ?
2025/12/19(金) 13:38:24.83ID:uPPpqdRm
ビルドする時間帯によっては依存cratesの更新確認だけで待たされる時があるな
2025/12/19(金) 14:18:19.55ID:XFk/dn+M
>>241
その仕組みのない言語はやばい
2025/12/19(金) 14:24:27.94ID:LTe4LjTR
Rust はシングルバイナリ指向なのでホットリロードは想定してないがバイナリを分割すれば (ホスト環境によっては) 今でもホットリロードできる。
実行環境次第。
2025/12/19(金) 23:23:49.86ID:kouENYLZ
ホットリロードが欲しいのはGUIみたいに「ちょっと変えて試す」をしたい分野だと思う
それはRustの得意分野でもないし、そこはC#やJSで良いじゃない
Rustが向く分野とそうでない分野があるというだけの話
245デフォルトの名無しさん
垢版 |
2025/12/20(土) 06:57:23.96ID:z+uDpZnV
ホットリロードはWEB APIにこそ欲しい
2025/12/20(土) 09:53:03.44ID:IOYr4f7F
>>241
何時間も待たされて(ちょっとずつは進んでる)眠くなったのであきらめて
次の日やり直したら一瞬で終わったことがある
2025/12/20(土) 09:54:12.80ID:IOYr4f7F
>>243
その仕組みのないOSはやばい
2025/12/20(土) 10:06:31.65ID:cXl/wOeV
明示的にアップデート指定した時以外はイチイチ外部パッケージのダウンロード&再コンパイルとかやらないで欲しいな
2025/12/20(土) 13:27:35.26ID:Hio2Ii0f
>>248
クレイト使用バージョンを指定してないからでは
2025/12/21(日) 13:34:39.31ID:i93tKLa3
hoge = "1.2.3"
よりも
hoge = ">=1.2.3"
よりも
hoge = "=1.2.3"
推奨ですね判ります
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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