Rust part33

1デフォルトの名無しさん
垢版 |
2025/08/15(金) 17:49:30.70ID:N8TIzbWg
公式
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 part32
https://mevius.5ch.net/test/read.cgi/tech/1755057787/
Rust part31 https://mevius.5ch.net/test/read.cgi/tech/1751545806/
Rust part30 https://mevius.5ch.net/test/read.cgi/tech/1748392296/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/10/31(金) 14:48:40.46ID:23LwyDl2
>>500
exampleで本題ではないエラー処理を略すのは常識なんだがdoc.rust-lang.org見たことない人なんやろか
2025/10/31(金) 16:19:06.11ID:Q4NMZH5V
現実にはあり得ないコードで可読性を論じるおバカさん乙
2025/10/31(金) 16:34:52.47ID:nOVciEeR
代案を出せばいいんじゃね
2025/10/31(金) 18:21:19.45ID:UvKtMOZk
案が増える保証はどこにもない
コメのように減産も増産もありうる
2025/10/31(金) 18:29:01.57ID:GZFK+llv
「批判するなら代案だせ」ww
度し難いクソコードに代案を求めるなよ

しかも既に代案出してもらってるというのにこのバカは
2025/10/31(金) 18:45:07.30ID:Gjt4wm2R
OnceLockとLazyLockがクソコードってRustのスレッドセーフ初期化で辿り着いた最善案なのに
2025/10/31(金) 18:47:08.71ID:FXqlUjZZ
代案はZigを使うこと
2025/10/31(金) 19:49:57.01ID:MSFuZ4Ne
昔は初期化のためにlazy_static!が使われてた
そこへ改良されたonce_cell::sync::Lazyが登場した
それを標準ライブラリに取り込んだのがstd::sync::LazyLockで最終形
2025/10/31(金) 20:47:30.17ID:T+pQSrXv
質問者が消えて要件不明なのにいつまでも基礎的な部分を整理だけし続けるいつものやつ
2025/10/31(金) 21:12:30.84ID:UvKtMOZk
ギリギリセーフは最善ではない
細かいルールに依存してしまうので些細なルール変更でアウトになる
という基礎知識
512デフォルトの名無しさん
垢版 |
2025/10/31(金) 21:15:37.01ID:+FXrANIZ
>>495
MutexとLazyLockは役割が全く異なる。
staticで使う場合にその目的に応じて以下の3つに使い分けられる。
LazyLock<T> 内部可変は不要で動的初期化をしたい場合
Mutex<T> 内部可変が必要で静的初期化をしたい場合
LazyLock<Mutex<T>> 内部可変が必要で動的初期化をしたい場合
2025/10/31(金) 21:45:15.58ID:T+pQSrXv
内部可変ってそういう意味じゃねえから
2025/10/31(金) 21:48:39.11ID:nBW4bT0X
このようにRustは非常に使いにくい言語です
2025/10/31(金) 22:01:01.32ID:UvKtMOZk
初期化と代入の役割は全く異なるとも言えるし、ほとんど同じとも言える
これも逆転しやすい
些細な変化で善悪が逆転する
2025/10/31(金) 22:20:06.99ID:Bc1Z9Piy
>>507
君の書いた>>475がクソコードなだけで
クソコードで使われてるLazyLockやOnceLockがクソだという話ではない
下手くそな論点ずらしはやめろ
2025/10/31(金) 22:21:19.33ID:Bc1Z9Piy
間違えた
クソコードは>>482だった
518デフォルトの名無しさん
垢版 |
2025/10/31(金) 22:40:17.03ID:+FXrANIZ
>>513
safe Rustではstaticは不変値になり不変参照しか得られない。
そのような不変参照しか持たない場合でも可変な借用を得られる仕組みが内部可変性。
>>512ではそのstaticで内部可変が必要な場合と不要な場合の区別が重要なので分けて説明したが、何を問題視している?
2025/10/31(金) 23:01:52.93ID:UvKtMOZk
任意のTを実体化可能
内部可変を禁止できると思ってるなら事実誤認
2025/10/31(金) 23:53:36.36ID:8btOyh6t
>>516
コード見たけど何が問題なのか教えて
2025/11/01(土) 10:00:34.52ID:aFOqjWrP
>>520
482みたいなAIやら人工知能に書かせたコードの善し悪しなんて語っても無駄
2025/11/01(土) 10:21:55.29ID:uKbhU6EZ
生成AIのほうが>>482なんかよりはるかにまともなコード書くぞ
2025/11/01(土) 10:29:48.54ID:uKbhU6EZ
試しにChatGPTになぜクソコードなのか聞いてみた

====
以下のコードがクソコードだと言われました。なぜクソコードなのでしょうか? どうすればクソコードじゃなくなりますか?

とても良い質問です。
このコード、**「動くけど設計として危険・臭い」**という典型的なクソコード(=悪い設計例)です。
なぜそう言われるか、そしてどう直せばいいか、順を追って説明します。

なぜ「クソコード」扱いされるのか
@ グローバル変数依存(隠れた順序依存)

BAR は FOO の値に依存しているのに、Rustの型システムではそれが表現されていません。
FOOをセットしてからBARを使うという順序前提が、コードの外にあります。
つまり:


A LazyLock と OnceLock の使い分けが不自然
FOO は「後でセットする」ための OnceLock
BAR は「自動で初期化する」ための LazyLock

しかし BAR の初期化に FOO が必要ということは、BAR の「自動初期化」が成立していません。
結局「FOOが先に初期化されていないと壊れる」=「LazyなのにLazyでいられない」状態です。


B 初期化エラーが実行時panic
expect("FOO: not initialized") は、
BARを最初に触ったタイミングでFOOが未初期化だったらpanic

という非常に脆い構造です。
初期化の安全性がコンパイル時に保証されず、実行時の偶然に依存しています。
2025/11/01(土) 10:30:45.08ID:uKbhU6EZ
「動くけど設計として危険・臭い」という典型的なクソコードです!
2025/11/01(土) 10:55:39.21ID:/uJItwLS
なぜAIはクソかを質問して
「AIの学習に人間が必要ということは自動初期化が成立していません」を生成できたら少しは信用できる
2025/11/01(土) 10:58:56.69ID:g3WZAZrD
>>518
たぶんRefCell/Mutex/RwLockあたりのロック付き型のことを内部可変性って呼んでるんだろうなって思ったけど

>不変参照しか持たない場合でも可変な借用を得られる仕組みが内部可変性。

この説明ならやっぱりそういう意味で書いてそうだね
Cell<T>もAtomic***も、さらに言えばLazyCell<T>も内部可変じゃないことになるが、まあそんなわけはないのでちゃんとドキュメント読んでね
2025/11/01(土) 11:04:56.46ID:mdP806Ha
言語に関係なく初期化ルーチンで必ず初期化を行なうグローバル変数などについては依存関係があってもいいんだよ
今回の場合は万が一その依存関係が崩れていればpanicで落ちるから完璧に安全でしょう
まずいのは依存関係が崩れても検知ができずに間違った未初期化の値のままプログラムが進むこと
Rustのpanicはこの基本概念に基づいて安全性のために存在しています
528デフォルトの名無しさん
垢版 |
2025/11/01(土) 11:40:18.77ID:M9NY+bCI
>>526
Rustでは内部可変を段階的に説明していてどちらも正しい。

一番の基本は、内部可変とは不変参照しか持たない時でも可変を許すパターン
https://doc.rust-lang.org/book/ch15-05-interior-mutability.html
Interior mutability is a design pattern in Rust that allows you to mutate data even when there are immutable references to that data
通常の説明ではこれで問題ない。

一方であなたの説明では一番大事な正確な定義が抜けているが、
Rustで内部可変とはUnsafeCellを用いていること、すなわちトレイトFreezeを実装していない!Freeze型を指す。
この!Freeze型とは内部可変をもたらすUnsafeCellを用いているか否かを示している。
AtomicもMutexもLazyLockも全て元を辿るとUnsafeCellが使われていて自動的に!Freeze型となる。
もちろん普段の説明ではこの厳密な定義を用いずに、内部可変とは不変参照しかない時でも可変を得られること、で構わないと思う。
2025/11/01(土) 13:01:38.93ID:s4kd72Pi
コード書くときにこういった謎の禅問答みたいなことを延々と続けてるのか
大変だな
2025/11/01(土) 13:03:56.65ID:g3WZAZrD
"allows you to mutate data"に対して「可変な借用を得られる」だと制限が強すぎて間違いだったのを理解したので
>>528では最初からそう言いたかったんですよってフリで「可変を許す」「可変を得られる」みたいな曖昧な表現にしれっと置き換える
これが所有権の複製話法です
2025/11/01(土) 13:08:31.28ID:c42kdQyz
rustは外部のライブラリーに依存しないで書くのは難しいような気がするのだが
2025/11/01(土) 13:08:31.85ID:TYBdxLbV
>>529
どれも単なる基礎知識だろ
コード書くための前提
2025/11/01(土) 13:19:59.11ID:QjdiwYjo
>>514
Rustの抽象度が高いことを使いにくいと感じる人は色んな知識経験が足りないんじゃないかな
抽象度の高いほうが可読性も保守性も良くて使いやすいよ
2025/11/01(土) 13:26:36.27ID:am2mePEs
>>529
普通はRustでもバイブコーディングでAI任せにして何も考えないから安心
どうでもいいことにこだわってるのは複おじぐらい
535デフォルトの名無しさん
垢版 |
2025/11/01(土) 13:28:11.18ID:b0QDefmP
rustは(知った被りアンチも多く嘘や不正確な情報が蔓延しているので)使いにくい
536デフォルトの名無しさん
垢版 |
2025/11/01(土) 13:35:00.58ID:c42kdQyz
rustはeatherはresultがあるから要らないといってなくなったらしいが、
errorのところにerrorじゃないものを入れてokのところに、
okじゃないものを入れるのにみんな抵抗感は感じないのだろうか
2025/11/01(土) 13:37:12.17ID:s4kd72Pi
GCに依存できる環境だとここまで考えなくてもいいんでしょ?
大変は大変でその代わりメリットがあると
2025/11/01(土) 13:39:02.26ID:QjdiwYjo
>>537
GC言語にも抽象度の高い言語があるからそこは関係ないよ
2025/11/01(土) 13:41:49.38ID:9L/RTK5n
>>537
GC言語でもグローバル変数をそのまま使ったらスレッドセーフでないため競合して詰む
もちろんその初期化も同じ
Rust固有の問題ではなくどの言語でも必要な話
540デフォルトの名無しさん
垢版 |
2025/11/01(土) 13:51:01.37ID:w12b3puC
>>536
Result型を本来の用途以外で使ったらコードレビューで絶対リジェクトされると思うよ
ResultとOptionは実用上での利用が多かったから標準ライブラリに入ったのであって、Eitherが使いたかったら外部ライブラリ使うか自作すればいい
2025/11/01(土) 13:57:10.92ID:W6xNe0tO
>>540
そんなことはない
標準ライブラリでもErrorを拡大解釈してエラー以外に用いている
特に多いのが値の返還にResultのErrorを利用
左右対称ならResultを使わずにeither crateを使うべき
2025/11/01(土) 14:22:52.12ID:t+20UcyI
>>534
基本的な概念や仕組みを知らないままバイブコーディングしていたらコードレビューもできずに詰みそう
2025/11/01(土) 14:52:04.69ID:/uJItwLS
謎の禅問答を学習したら知能は増え信者は減る?
いや信者が増える方が宗教だろ
科学を舐めるな
2025/11/01(土) 15:33:03.66ID:SAJJpDfX
複オジは嘘ばっかりだな
2025/11/01(土) 15:37:15.60ID:8wHtIByR
抽象化を理解できずに謎の禅問答にみえる新たな科学かもしれぬ
2025/11/01(土) 18:01:00.80ID:W1T4uP/l
複おじもはや一周回ってRustアンチまである
2025/11/01(土) 19:00:08.27ID:V6yHUqHj
>>545
盛大なブーメラン

>>528のように
内部可変性という抽象概念の定義を
特定の具体的内部実装でしか説明できないやつが
抽象化を理解してるわけがないんだよな

いつも思うが複オジはマジで抽象化理解してないよね
>>482のようなクソコード量産するのも根本原因は同じだと思うよ
2025/11/01(土) 19:22:28.52ID:na8d22ha
両者が対等ならLeft、Right使うよりOwned、Borrowedみたいに名前つけてくれ
Leftが成功寄り、Rightが失敗寄りみたいな慣習を持ち出すならResultでいい
2025/11/01(土) 19:58:52.73ID:8wHtIByR
成功失敗に使う言語もあるけどRustのEitherはLeftとRight完全に対等
Resultよりも高機能で強力
RustのEitherはもともとRayonのために作られてItertoolsもそのEitherを組み込んでいて事実上の標準
2025/11/01(土) 21:11:37.16ID:yJiGHW4c
>>546
本人にそのつもりは一切ないだろうが結果的にはアンチ活動家以外の何者でもないわな
2025/11/01(土) 21:21:09.81ID:cx7pH9ul
Rust使いはアホというイメージを与えると同時に、
あんまりにも盲信的かつ程度が低いもんだから他の人が「さすがにそれは違う」とRustに対して批判的なトーンで諫めるものだから、
自然とスレの空気がアンチっぽくなるんだよね
2025/11/01(土) 21:22:50.18ID:8wHtIByR
困ったもんだよな
2025/11/01(土) 21:30:17.22ID:gnnSc5/H
servo、久しぶりに動かしてみたら、まあまあ出来てるな
ついでにversoプロジェクトが終了していたことを今さら知った

がわの部分、shellが機能不足過ぎて常用するブラウザーには到底ならないが
描画エンジンとしては現時点でも何かに使えそう
2025/11/01(土) 22:29:09.83ID:f7mQTVkH
Rust使いはアホではないけど概念的に普通にコード書くのも大変なんだなと
2025/11/01(土) 22:47:39.33ID:eIxSVUj6
抽象度の低い言語より書きやすい
2025/11/01(土) 23:35:48.21ID:g3WZAZrD
所有権の複製おじさん
データ参照の競合おじさん
可変を得るおじさん
2025/11/02(日) 15:05:38.09ID:CiqO+SUG
>>555
Rustより抽象度の低い言語ってメジャー言語ではCとC++しかないじゃん
558デフォルトの名無しさん
垢版 |
2025/11/02(日) 18:02:42.58ID:DEScUpRh
全部きれいなお姉さんに置き換えたら赦す心が芽生えた
559デフォルトの名無しさん
垢版 |
2025/11/02(日) 20:55:21.31ID:5I1cphwl
確かに船と同じでコードを女性に例えるともっと
大事に扱う気になるかも知れない
2025/11/02(日) 23:53:23.75ID:J6OkX1Eo
>>557
Goも
2025/11/03(月) 01:05:29.98ID:rQkJBpL5
メスガキのほうがイメージしやすいかもしれん
562デフォルトの名無しさん
垢版 |
2025/11/03(月) 11:14:52.63ID:nm4PTvZt
そういえば女性エンジニアって能力的な下限が男性底辺よりも上な気がする
組織による違いや生存者バイアス的なのもあると思うが
2025/11/03(月) 11:27:28.99ID:7oO4iHcI
原初は職業プログラマは女性の仕事だったのに一気に男性が増えたのはなぜななのか
2025/11/03(月) 11:55:28.00ID:0AHiueHW
男の1/100ぐらいしか女いないしな
数が多ければ多いほど無能と有能の差は広がる
2025/11/03(月) 12:06:07.94ID:w8FLSUod
プログラマの最底辺は技術云々じゃなく基本的な就労適正に問題があるレベルだからなあ
女性は自分の申告しているスキルの範囲ではそれなりに真面目にきっちりと仕事をする奴が多い気がする
ダメならすぐ病んで消えるから職場的にはあまり問題にならないし
2025/11/03(月) 12:14:09.94ID:b7J3p22l
Recent Rust Changes
https://www.ncameron.org/blog/recent-rust-changes/
567デフォルトの名無しさん
垢版 |
2025/11/05(水) 17:38:13.88ID:e7JKMroS
RustでESP32とオモたが、環境作りがムズイ。
Windows VSCodeでPlatformIOのようにサクっとできるようにならないもんかね?
568デフォルトの名無しさん
垢版 |
2025/11/05(水) 17:51:33.76ID:/BRKTToS
まだ発展途上じゃけえ
ほとんどのクレートがまだバージョン0だし
2025/11/05(水) 18:21:47.42ID:seaKh6U5
>>567
cargoでespupしてespflashでええやん
570デフォルトの名無しさん
垢版 |
2025/11/06(木) 06:35:00.47ID:GB9xAhoN
anyhowみたいなライブラリが出てきたということは、Rustってやっぱり厳密すぎたんじゃないかな
次に流行る言語は妥協がありそう
571デフォルトの名無しさん
垢版 |
2025/11/06(木) 12:39:14.84ID:GB9xAhoN
>>202
pythonでも標準ライブラリでasyncio.Lockが提供されてるよ
2025/11/06(木) 13:30:57.33ID:LQUNM8KW
>>571
Pythonのasyncio.Lockは失格
対象となる値とロックの関係が保持されない
ロックを得なくても値の変更が可能
2025/11/06(木) 13:33:07.83ID:avSCZEbn
Pythonはそういう用途に使う言語じゃない
まちがってる
2025/11/06(木) 13:51:58.57ID:nZ/9WqEw
>>571
よく読んでごらん
安全性のための必須条件を満たしているかどうかの話だよ
Pythonはこの安全性を満たしていないね

202 デフォルトの名無しさん sage 2025/09/21(日) 02:43:46.06 ID:ETMxp5J0
Mutexなどロックしている間のみ変数にアクセスできるしくみを用意している言語はRustだけじゃね?
2025/11/06(木) 14:12:27.56ID:Yd9kjPBo
>>571
複オジィッシング詐欺に引っ掛かるやつw
576デフォルトの名無しさん
垢版 |
2025/11/07(金) 16:08:21.14ID:2/Hvzjyz
Rustでスマホアプリのバックエンドを実装してるんだけど、sqliteがシングルスレッド前提だからそこだけ同期処理になるんよ
この領域を非同期で書けないの最高に気持ち悪い。まとめてsqlにデータを挿入しないで、データがバッファーに貯まったらダンプする処理とか同期で書くの生理的にきつい
tokioのchannelとstd::threadが混じっていく
2025/11/07(金) 16:32:35.77ID:sSuvh5Kf
>>576
Rust云々の前にそんなクソみたいなアーキテクチャを見直してきなさい
そんなもんどう考えてもまともなDBMSとスクリプト言語の組み合わせより遅くなるんだからRustの恥晒しになるだけ
2025/11/07(金) 16:44:11.59ID:bF5xlAUX
>>576
sqlite担当へチャネルを使ってリクエスト
sqlite担当はそのチャネルに来たリクエストを次々と処理する
579デフォルトの名無しさん
垢版 |
2025/11/07(金) 17:22:18.89ID:E0+MoMgg
>>577
iphone, androidで安定的に動く唯一のRDBであるsqliteがシングルスレッドでしか動かないからどうしようもないんですよ

>>578
自分も同じ結論に落ち着きました
本来なら非同期処理で書くべきようなことまで、ループ処理やタイムアウトを多用して同期で書くからムズムズするけど
2025/11/07(金) 17:22:46.88ID:w//DyTC5
>>576
sqlx::SqlitePool
581デフォルトの名無しさん
垢版 |
2025/11/07(金) 17:36:37.18ID:E0+MoMgg
>>580
ああっ。確かにsqlxを使う選択肢はありますね。失念してました
自分は実践でsqlxではなくrusqliteを技術選択しました
RDB用の単スレッドで動作させるならば、sqlxよりrusqliteの方が速いからです
別スレッドを立て、タスク管理をしてまでスループットを上げたいという条件下でsqlxは選びにくいと感じました
2025/11/07(金) 17:38:03.28ID:kqIhu9xc
>>576
sqliteは非同期には対応してないがマルチスレッドには対応していてシングルスレッド前提ではない
同時に書き込めるのは1コネクションだけなので書き込み処理を一つのスレッドにまとめる方法はよく採用されるけどそれをシングルスレッド前提と言ってる?

いずれにしろ非同期のラッパーを書いて同期部分は一箇所に隠蔽すればいいだけ
ラッパーが用意されてるライブラリもある
2025/11/07(金) 17:39:57.53ID:kqIhu9xc
>>577
バックエンドサーバーの話じゃなくてUIコード(フロント)から呼ばれるライブラリくらいの意味でバックエンドという言葉を使ってるのだと思う
584デフォルトの名無しさん
垢版 |
2025/11/07(金) 17:47:33.29ID:E0+MoMgg
>>582 >>583
自分の言葉の選択の曖昧なところまで含めてすべてお見通しですね
Sqliteがシングルスレッド前提ではなく、制約がコネクションにかかること指摘ありがとうございます
同期のコードを集約して、非同期で包む方向で実装を進めていました。ライブラリについては調べてなかったです。有益な情報ありがとうございます
丁度そのあたりのコードで自作が増えて実装が複雑化しはじめていた頃なのでツールを調べてみます
2025/11/07(金) 19:56:16.34ID:gmNJckty
いつから健全なスレになった
586デフォルトの名無しさん
垢版 |
2025/11/07(金) 20:31:07.75ID:MqFsU2xp
sqliteて最近はcloudflareでも使われてるし最近流行ってるらしい🧐
2025/11/07(金) 22:19:46.72ID:Q8YVEkBf
ワークロード的に明らかに問題が出ることが分かってるというのでなければ
とりあえずspawn_blockingを使うだけの方法から始めてもいいと思う
2025/11/07(金) 22:33:36.98ID:ei1rk0H/
>>582
彼の用途でそのマルチスレッド対応は意味がなくてスレッドMutexにより非同期タスクスケジューラのスレッドをブロックしてスケジューリング妨害となってしまう
つまりスレッドMutexではなくawaitで待つ非同期タスクMutexを使うべきだがsqliteは当然対応していない
そこでシングルスレッド前提で使う話なのかなと理解した
マルチスレッドで使う場合も非同期タスクとは別スレッドのsqlite用のスレッドプールを用意する形になるかと
2025/11/08(土) 01:31:09.85ID:xFyQtacU
Debianのパッケージマネージャーであるaptが部分的にRustで書き直された影響で
RustがコンパイルできないマイナーなアーキテクチャがOSサポート停止になってしまうらしい
これは恨みを買うね
590デフォルトの名無しさん
垢版 |
2025/11/08(土) 13:19:45.72ID:4T3c3gtX
aptのメンテナーすごい判断したな
メリットの方が大きいと踏んだからだと思うが、ノイジー・マイノリティの影響力を舐めてるわ
2025/11/08(土) 13:56:10.82ID:iJ+TD7ss
実質的なメリットよりモチベーションの問題でしょ
DebianはLinux界隈の中では比較的大きな組織とはいえ所詮はコミュニティプロジェクト、
Rustを使えるならと活発に貢献してくれる若い奴1人のモチベ=[ションは開発b続ける上で大bォなファクターbセ
でも成演ハを享受するだbッのユーザーはbオばしば、大きbネ企業の製品と涛ッ等の体制や責粕Cがあるように滑ィ違いしてるんbセよね
まbRustの方はもbヘやコミュニテャBプロジェクトbナはなく壮々たb髑蜉驪ニが顔を連ね潤沢なリソ=[スを有する組瑞Dなので、同様bフ言い訳は許さb黷ネいけどね
2025/11/08(土) 14:53:09.75ID:uoEf+XNp
シェア低くてもサポートしてほしいなら、自分でフォークして保守せえやってのが本来のOSSだからな
2025/11/08(土) 15:05:36.63ID:X5jMFRl4
https://lists.debian.org/deity/2025/10/msg00072.html

> alpha, hppa, m68k, and sh4

どうでもよ……
2025/11/08(土) 17:35:27.61ID:bNW9jxHO
詳しくないんだけど、サポート外になるCPUってどんなの?
古いPCに使われてるものなのか、それとも組込み機器など特定分野で使われてるものなのか
AMDやARMしか知らないから、実際どういうところが影響受けるのかいまいち想像が付かない
2025/11/08(土) 17:37:34.34ID:pXyjl95e
>>594
誰も使ってないから気にしなくていいよ
2025/11/08(土) 17:46:52.09ID:tF6dEOxV
Cで書こうがRustで書こうがllvmではコンパイルできない感じ?
2025/11/08(土) 18:37:24.47ID:ICj3I2sk
>>588
意味なくないよ
マルチスレッド対応してるから
データをバッファに貯めてからまとめてDBに書くような処理を実行しながら
ユーザーアクションに応じたデータを同じDBから読み込んで表示するみたいなことが同時にできるわけで

とりあえず同期/非同期とシングルスレッド/マルチスレッドを区別しようよ
長時間かかる同期処理を通常の非同期タスクスケジューラにそのまま投げたらダメだということと
sqliteのマルチスレッド対応状況とは何の関係もないからさ
2025/11/08(土) 18:51:24.50ID:Mkz3TZ2+
そんな話は誰もしていなくて>>579氏はsqliteが非同期対応していないもどかしさを述べてるね
素直に let res = sqlite. request(x).await; と書きたい話だと思うよ
2025/11/08(土) 19:28:31.98ID:tF6dEOxV
シングルスレッドかつ同期 => 悪い
マルチスレッドまたは非同期 => 良い
シングルスレッドかつ非同期 => 書けない

非同期とマルチスレッドの二刀流のようなものが正解
2025/11/08(土) 20:59:10.51ID:fJHSi6K0
Rustはマルチスレッド非同期がデフォルトだよ
事情があればシングルスレッド指定しても非同期使えるけど
2025/11/08(土) 21:17:23.23ID:bNW9jxHO
>>600
Rustがじゃなくてtokioがじゃない?
言語そのものは非同期ランタイムなんて持ってないわけだし
レスを投稿する

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

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