Rust part33 (604レス)
1-

1
(1): 08/15(金)17:49 ID:N8TIzbWg(1/2) AAS
公式
外部リンク:www.rust-lang.org
外部リンク:blog.rust-lang.org
外部リンク:github.com

公式ドキュメント
外部リンク:www.rust-lang.org

Web上の実行環境
省16
524: 11/01(土)10:30 ID:uKbhU6EZ(3/3) AAS
「動くけど設計として危険・臭い」という典型的なクソコードです!
525: 11/01(土)10:55 ID:/uJItwLS(1/2) AAS
なぜAIはクソかを質問して
「AIの学習に人間が必要ということは自動初期化が成立していません」を生成できたら少しは信用できる
526
(1): 11/01(土)10:58 ID:g3WZAZrD(1/3) AAS
>>518
たぶんRefCell/Mutex/RwLockあたりのロック付き型のことを内部可変性って呼んでるんだろうなって思ったけど

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

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

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

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

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

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

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

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

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

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

> alpha, hppa, m68k, and sh4

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

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

非同期とマルチスレッドの二刀流のようなものが正解
600
(1): 11/08(土)20:59 ID:fJHSi6K0(1) AAS
Rustはマルチスレッド非同期がデフォルトだよ
事情があればシングルスレッド指定しても非同期使えるけど
601: 11/08(土)21:17 ID:bNW9jxHO(2/2) AAS
>>600
Rustがじゃなくてtokioがじゃない?
言語そのものは非同期ランタイムなんて持ってないわけだし
602: 11/08(土)21:20 ID:xFyQtacU(2/2) AAS
いや、ほとんどの場合はマルチスレッド同期でじゅうぶん
なにかと非同期にしたがるのは意識高い系の所業
603: 11/08(土)21:44 ID:yMZK+1Tu(1) AAS
昔はselectやpollで捌いていたけど
Rustの非同期タスクとtokioスケジューラで便利になったよ
意識が高いではなくプログラミングのしやすさと実用面から非同期が使われてるの
604: 11/08(土)22:40 ID:tF6dEOxV(3/3) AAS
なんでも文字列で入出力したらGCの意識じゃなくて価値が低くなる
価値を高騰させろ
循環参照を考えろ
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.732s*