公式
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/
探検
Rust part33
1デフォルトの名無しさん
2025/08/15(金) 17:49:30.70ID:N8TIzbWg2デフォルトの名無しさん
2025/08/15(金) 17:59:47.23ID:N8TIzbWg 5ch電源断とその際のバグにより
各板の現役スレ一部がタイミングの運で失われた模様
Rustはpart31とpart32両方が現役の状況であった
各板の現役スレ一部がタイミングの運で失われた模様
Rustはpart31とpart32両方が現役の状況であった
3デフォルトの名無しさん
2025/08/15(金) 20:39:09.07ID:55NQaS0p 5chのシステムっていまだにperlとかなんだっけ?
4デフォルトの名無しさん
2025/08/15(金) 21:05:50.57ID:JdtfTdo0 誰かRustで5chクローン作ってくれろ
2025/08/15(金) 21:13:27.00ID:GcewhsmR
>>2
どういうバグ?
どういうバグ?
2025/08/15(金) 21:42:40.40ID:5gemkVLD
昔から活発な板でdat一覧ファイル壊れたりロストするから排他制御や落ちた時の途中状態からのリカバリとかザルなのかもね
2025/08/15(金) 21:48:40.45ID:XX86qaZt
Rustじゃ20年ぐらい掛かりそう
2025/08/15(金) 22:05:07.21ID:y6bONxHy
2ch初期からあるread.cgiとpostの読み書き基本掲示板機能部分だけなら1日で終わるけど
後から追加した外から見えない部分が絡み合って規模も読めないね
後から追加した外から見えない部分が絡み合って規模も読めないね
9デフォルトの名無しさん
2025/08/15(金) 22:49:05.86ID:bbOcnQZV 難読よいしょw部
難読宝田真月部
難読オランザピン部
難読肉壺ワッショイ部
難読自己中部
難読承認欲求部
難読ゴキブリ部
難読助かりました部
難読宇宙人部
難読でんちゃでんちゃでんちゃちゃっちゃっちゃ〜部
難読カービィ部
難読失敗作部
難読ADHD部
難読自開部
難読多動部
難読在日部
難読糖質部
難読人非人部
難読生まれも育ちもやまゆり園部
難読何ガン飛ばしてんだよオイ!!部
難読池沼部
難読トナラー部
難読表出ろこの野郎!部
難読マウント部
難読ホンモノ部
難読害悪部
難読ガガイのガイ部
難読syamu未満部
難読底辺部
難読インチュニ部
難読宝田真月部
難読オランザピン部
難読肉壺ワッショイ部
難読自己中部
難読承認欲求部
難読ゴキブリ部
難読助かりました部
難読宇宙人部
難読でんちゃでんちゃでんちゃちゃっちゃっちゃ〜部
難読カービィ部
難読失敗作部
難読ADHD部
難読自開部
難読多動部
難読在日部
難読糖質部
難読人非人部
難読生まれも育ちもやまゆり園部
難読何ガン飛ばしてんだよオイ!!部
難読池沼部
難読トナラー部
難読表出ろこの野郎!部
難読マウント部
難読ホンモノ部
難読害悪部
難読ガガイのガイ部
難読syamu未満部
難読底辺部
難読インチュニ部
2025/08/15(金) 23:02:17.30ID:DXpoUqnv
山下スクリプト回りの対策で、エラーが出た時にそれが何故出てるエラーなのかすら
今の5chはもはやアンドキュメントだからな
今の5chはもはやアンドキュメントだからな
2025/08/15(金) 23:41:07.28ID:GcewhsmR
電源落ちたからって前スレまで消えるのは常識的には考えられない動きだけど5chはそういうものなんだな
12デフォルトの名無しさん
2025/08/16(土) 00:28:31.64ID:yx9F5+UN 難読漢字部
ガイジの集まり
くたばれよ
みんなもポケモンゲットじゃぞ
ガイジの集まり
くたばれよ
みんなもポケモンゲットじゃぞ
2025/08/16(土) 00:33:34.28ID:35qrMgqn
2025/08/16(土) 11:34:10.89ID:27T353mi
チューリップの中で再現性のない部分だけ消えなさい
バブルは消えた
バブルは消えた
15デフォルトの名無しさん
2025/08/16(土) 15:07:42.32ID:uzsALVJv 難読ロリコン部
難読僕のスマホ返せぇぇぇ!!部
難読とど田とどら部
難読ちぎゅ田ちぎゅら部
難読チーズホビー部
難読お薬手帳部
難読底辺部
難読積極奇異型アスペ部
難読電子障害者手帳部
難読自開部
難読穢多非人部
難読バ漢字部
難読ウィィィィィィィィッス部
難読チギュァァァァァァァァァァァァ部
難読動物園部
難読おかしな奴しかいないんだけど部
難読助かりました部
難読舌打ち部
難読類友部
難読ガイジ(ゲェジ)部
難読スタバ陽キャきっしょ部
難読僕も!僕も気持ちいいことしたい!!部
難読自己中部
難読Fラン大学中退部
難読トナラー部
難読スペシャルオリンピックス部
難読ひまわり学級部
難読ゴミ部
難読弱者男性部
難読アホロライ部
難読僕のスマホ返せぇぇぇ!!部
難読とど田とどら部
難読ちぎゅ田ちぎゅら部
難読チーズホビー部
難読お薬手帳部
難読底辺部
難読積極奇異型アスペ部
難読電子障害者手帳部
難読自開部
難読穢多非人部
難読バ漢字部
難読ウィィィィィィィィッス部
難読チギュァァァァァァァァァァァァ部
難読動物園部
難読おかしな奴しかいないんだけど部
難読助かりました部
難読舌打ち部
難読類友部
難読ガイジ(ゲェジ)部
難読スタバ陽キャきっしょ部
難読僕も!僕も気持ちいいことしたい!!部
難読自己中部
難読Fラン大学中退部
難読トナラー部
難読スペシャルオリンピックス部
難読ひまわり学級部
難読ゴミ部
難読弱者男性部
難読アホロライ部
2025/08/16(土) 17:15:18.32ID:2ZRl/XaI
Check Pointが見つけたと言ってるRust製のWindowsカーネルコンポーネントの脆弱性ってどのCVEか分かる人いない?
https://blog.checkpoint.com/research/microsoft-vulnerabilities-exposed-by-check-point-research/
https://msrc.microsoft.com/update-guide/vulnerability
https://blog.checkpoint.com/research/microsoft-vulnerabilities-exposed-by-check-point-research/
https://msrc.microsoft.com/update-guide/vulnerability
17デフォルトの名無しさん
2025/08/16(土) 22:23:23.06ID:uzsALVJv 難読DSM部
難読さす障部
難読さすガイ部
難読動物園部
難読トナラー部
難読よいしょw部
難読ホンモノ部
難読頓服部
難読でんちゃでんちゃでんちゃちゃっちゃっちゃ〜部
難読マスターベーション部
難読マウント部
難読ウィィィィィィィィッス部
難読syamu未満部
難読スマホ脳部
難読多動部
難読害悪部
難読電車(バス)代割引部
難読エッホエッホ部
難読てんかん部
難読ディズニー格安部
難読フレンド申請部
難読すいません、3種のチーズ牛丼特盛りに温玉付きでお願いします部
難読水用意しろ水。イライラするわぁ部
難読おかしな奴しかいないんだけど部
難読デスマフィン部
難読コンサータ部
難読ガイジ(ゲェジ)部
難読オランザピン部
難読さす障部
難読さすガイ部
難読動物園部
難読トナラー部
難読よいしょw部
難読ホンモノ部
難読頓服部
難読でんちゃでんちゃでんちゃちゃっちゃっちゃ〜部
難読マスターベーション部
難読マウント部
難読ウィィィィィィィィッス部
難読syamu未満部
難読スマホ脳部
難読多動部
難読害悪部
難読電車(バス)代割引部
難読エッホエッホ部
難読てんかん部
難読ディズニー格安部
難読フレンド申請部
難読すいません、3種のチーズ牛丼特盛りに温玉付きでお願いします部
難読水用意しろ水。イライラするわぁ部
難読おかしな奴しかいないんだけど部
難読デスマフィン部
難読コンサータ部
難読ガイジ(ゲェジ)部
難読オランザピン部
2025/08/17(日) 20:15:25.86ID:JE2V7bGm
Windows更新プログラムバグの温床Rust
馬鹿コーダを無理やり矯正したとこで馬鹿が治る筈もなく
馬鹿コーダを無理やり矯正したとこで馬鹿が治る筈もなく
2025/08/17(日) 21:19:09.68ID:TxHGfZIC
バグを無くせるプログラミング言語は存在しない
Rustはプログラミング言語の中では最も様々な安全性を保証してくれる
それ以上でもそれ以下でもない
Rustはプログラミング言語の中では最も様々な安全性を保証してくれる
それ以上でもそれ以下でもない
2025/08/17(日) 21:22:39.79ID:JE2V7bGm
わかってねぇな
それじゃホンモノは育たないことを
それじゃホンモノは育たないことを
2025/08/17(日) 22:50:15.00ID:XH7kxkHq
Rustは生き物ですらない
育児もディールもしない
育児もディールもしない
2025/08/18(月) 07:58:05.46ID:WV63/BRN
RustってIT土方専用言語になりそう
2025/08/18(月) 08:11:30.19ID:ilCqlqaZ
GCC Rustはだいぶ前にメインラインにマージされたみたいだけど
クロス対応ってどこまで進んでいるんだ?
LLVMバックエンドがないマイコン系ISAもRustで開発できる感じ?
クロス対応ってどこまで進んでいるんだ?
LLVMバックエンドがないマイコン系ISAもRustで開発できる感じ?
2025/08/18(月) 21:19:44.54ID:xACiQreQ
Rustは衰退しました。
2025/08/18(月) 21:46:08.37ID:dnUOS2YV
その書き込みもRust製のPingoraを通って投稿されてRust製のPingoraを通って皆が読んでるよ
2025/08/18(月) 22:00:15.90ID:lyr3W+Wr
横長のGUIが衰退したら次は縦長のGUIが再発明されたりする
じゃあ再発明しても変化しない仕様はなんだ
0で割り算できない仕様とか
じゃあ再発明しても変化しない仕様はなんだ
0で割り算できない仕様とか
2025/08/19(火) 19:22:34.36ID:XX3oox1B
COBOLみたいに固定長レコードを基本として基本的に動的アロケーションをしない方向のモダンな言語もあっていいと思う
Rustを待たずとも、あれはあれでメモリ安全の究極の形の一つ
Rustを待たずとも、あれはあれでメモリ安全の究極の形の一つ
2025/08/23(土) 19:14:03.74ID:K0SmVlfv
>複数の値 (いわゆる多値) を関数が返せる言語はそれほど多くない。
>LISP 系は多値のサポートがあることが多いけどそれ以外だと Go くらいじゃないかな?
Rustの()は値0個で(a,b,c)は値3個の多値
という認識で合ってますか?
>LISP 系は多値のサポートがあることが多いけどそれ以外だと Go くらいじゃないかな?
Rustの()は値0個で(a,b,c)は値3個の多値
という認識で合ってますか?
2025/08/23(土) 19:50:48.28ID:CHT0FIec
2025/08/23(土) 21:56:54.53ID:cDLDYI8A
夏のオージ演
2025/08/23(土) 22:15:56.19ID:vghJtGax
多値の取り扱いの仕方の一つがタプル
そしてRust公式にも Functions can use tuples to return multiple values. と明記されている
>>28の引用文についてRustは関数で多値を返すことができる言語の一つ
そしてRust公式にも Functions can use tuples to return multiple values. と明記されている
>>28の引用文についてRustは関数で多値を返すことができる言語の一つ
2025/08/23(土) 22:45:01.43ID:b43T5BM2
Rustのタプルは多値で合っているが、言語によってはタプルというオブジェクト[のポインタ]を1つ返す場合もある。
そのような言語ではタプル≠多値で、Rustではタプル=多値。
Rustで関数がタプルを返す時に、各環境で可能なら複数のレジスタを使って返し、レジスタ返しの数を超えていれば、例えば呼び出し元スタックフレームの指定領域に直接書き込んで返す。
したがってRustは多値返しをサポートする言語。
そのような言語ではタプル≠多値で、Rustではタプル=多値。
Rustで関数がタプルを返す時に、各環境で可能なら複数のレジスタを使って返し、レジスタ返しの数を超えていれば、例えば呼び出し元スタックフレームの指定領域に直接書き込んで返す。
したがってRustは多値返しをサポートする言語。
2025/08/24(日) 06:23:07.67ID:yIg8YRK3
分野によって用語の意味にブレがあるからそういうのを厳密に考えてもあんまり意味ない。
狭義の多値は継続 (continuation) に複数の値が渡ることをいうのでたぶん >>28 はその意味で言ってて、その意味ではタプルは多値ではない。
単なる言語ユーザの目線ではタプルにまとめて受け渡すことと複数の値を受け渡すことには何も違いはないから同一視しても何も困らないよ。
形式論理とかの世界の話。
狭義の多値は継続 (continuation) に複数の値が渡ることをいうのでたぶん >>28 はその意味で言ってて、その意味ではタプルは多値ではない。
単なる言語ユーザの目線ではタプルにまとめて受け渡すことと複数の値を受け渡すことには何も違いはないから同一視しても何も困らないよ。
形式論理とかの世界の話。
2025/08/24(日) 06:51:31.37ID:Q1fxgDlW
重要なことはオーバーヘッドの有無
タプルをオブジェクトの一種として扱う言語はオブジェクトを用意してそのアドレス単値のみを渡すため間接アクセスのオーバーヘッドが生じる
タプルを多値として扱うRustは多値として渡せるためオーバーヘッドが生じない
もちろんRustではタプルをBoxに入れることでアドレス単値のみ返すことも可能でオブジェクト方式の言語は常にそれをしていることになる
タプルをオブジェクトの一種として扱う言語はオブジェクトを用意してそのアドレス単値のみを渡すため間接アクセスのオーバーヘッドが生じる
タプルを多値として扱うRustは多値として渡せるためオーバーヘッドが生じない
もちろんRustではタプルをBoxに入れることでアドレス単値のみ返すことも可能でオブジェクト方式の言語は常にそれをしていることになる
2025/08/24(日) 07:38:29.67ID:yIg8YRK3
アーキテクチャによって ABI は違うかもしれないけど一般的な実装としては
関数の返却値が大きい時は呼出し側でメモリを確保してそれを隠れた引数として渡すようなメカニズムになってる。
返却値はスタックを介さない。
これは C++ でも同じ。
関数の返却値が大きい時は呼出し側でメモリを確保してそれを隠れた引数として渡すようなメカニズムになってる。
返却値はスタックを介さない。
これは C++ でも同じ。
2025/08/24(日) 07:52:38.38ID:lHuVCVKu
>>35
ほぼ合っているが一部だけ違う
間違ってる部分は「スタックを介さない」
正解は「スタックを介す」ことで高速に引き渡す
サイズの大きな値を返す場合
具体的には呼び出し元でスタックポインタを増減することでスタックフレームを拡大してその確保領域のアドレスを隠れた引数としてレジスタ渡しする
呼び出された関数側ではその確保領域に直接書き込んで値を返す
ヒープ領域を確保して受け渡す方式と比べるとメモリ領域確保のコストがない点とスタック上でそのままメモリキャッシュに乗る点で有利
ほぼ合っているが一部だけ違う
間違ってる部分は「スタックを介さない」
正解は「スタックを介す」ことで高速に引き渡す
サイズの大きな値を返す場合
具体的には呼び出し元でスタックポインタを増減することでスタックフレームを拡大してその確保領域のアドレスを隠れた引数としてレジスタ渡しする
呼び出された関数側ではその確保領域に直接書き込んで値を返す
ヒープ領域を確保して受け渡す方式と比べるとメモリ領域確保のコストがない点とスタック上でそのままメモリキャッシュに乗る点で有利
2025/08/24(日) 07:56:09.24ID:lHuVCVKu
ちなみにRustでx64アーキテクチャの時
16バイトまでならレジスタ渡しになり上記スタック領域は使われないため更に速い
16バイトまでならレジスタ渡しになり上記スタック領域は使われないため更に速い
2025/08/24(日) 08:16:24.05ID:lHuVCVKu
ごめん、肝心なところ書き間違えてる
✕ 16バイトまでならレジスタ渡し
○ 16バイトまでならレジスタ返し
✕ 16バイトまでならレジスタ渡し
○ 16バイトまでならレジスタ返し
2025/08/24(日) 10:58:20.04ID:lOj53x5G
言語が多値返却をサポートしてるかどうかというのは文法としてサポートしてるかどうかという意味
文法的にはサポートしてないけど「〇〇使えば多値返却できる」のは当たり前
一般的なプログラミング言語で「Functions can use 〇〇 to return multiple values」の〇〇に当てはまるものがない言語は無いので意味がない
文法的にサポートしているかどうかと内部実装がどの程度最適化されるのかはまた別の話
文法的にはサポートしてないけど「〇〇使えば多値返却できる」のは当たり前
一般的なプログラミング言語で「Functions can use 〇〇 to return multiple values」の〇〇に当てはまるものがない言語は無いので意味がない
文法的にサポートしているかどうかと内部実装がどの程度最適化されるのかはまた別の話
2025/08/24(日) 11:01:04.53ID:o5OQy7cK
多値が返せるか?の意味なんて、ユーザ的には戻り値の分割代入ができるか?ってだけだし
ダラダラ言わずに返せますで終わりでよくね
ダラダラ言わずに返せますで終わりでよくね
41デフォルトの名無しさん
2025/08/24(日) 11:17:14.32ID:DLpoJrbF Rustは多値を返す機能があるだけでなく
その実装も本当に多値を返すため効率よく実行も速いことが特徴
その実装も本当に多値を返すため効率よく実行も速いことが特徴
2025/08/24(日) 11:34:24.43ID:yIg8YRK3
>>40
仕様を読むときは言語の理屈や用語をわかってないとちゃんと読めない。
複数の要素をひとつにまとめたもの (タプルや構造体) をひとつ返すというのと複数の値を返せるというのは違うことなんだが、
Rust では同一視することにしたというならそれはそれで同一視しているという理屈をわかってないといけない。
仕様を読むときは言語の理屈や用語をわかってないとちゃんと読めない。
複数の要素をひとつにまとめたもの (タプルや構造体) をひとつ返すというのと複数の値を返せるというのは違うことなんだが、
Rust では同一視することにしたというならそれはそれで同一視しているという理屈をわかってないといけない。
43デフォルトの名無しさん
2025/08/24(日) 11:46:57.61ID:s620v8qa >>42
それは屁理屈
プログラマとしては多値を返せる機能があればよいわけで、
それがタプルという形で実現されていようが困ることは何一つない
逆に、タプルをサポートしていればそれだけで十分であり、
タプルでない多値をサポートするメリットが何もない
それは屁理屈
プログラマとしては多値を返せる機能があればよいわけで、
それがタプルという形で実現されていようが困ることは何一つない
逆に、タプルをサポートしていればそれだけで十分であり、
タプルでない多値をサポートするメリットが何もない
2025/08/24(日) 11:50:38.02ID:yIg8YRK3
2025/08/24(日) 11:58:39.52ID:sGVh/967
多値をサポートしてる言語の例としてGoが上で挙げられているけどさ
Goはタプルがなくてみんな困っている
タプルがある言語では多値がなくて困った話は聞かれない
機能として『タプル ⊃ 多値』 だからだよ
Goはタプルがなくてみんな困っている
タプルがある言語では多値がなくて困った話は聞かれない
機能として『タプル ⊃ 多値』 だからだよ
2025/08/24(日) 12:05:10.36ID:DXAve6fe
Goでタプルがなくて辛いという話は聞いたことがないな
最適化の観点抜きで機能的に他でカバーできるから不要と言ってしまうと、
例えばオブジェクトは全部ヒープに置いてスマポの所有権移動だけにしてしまえば複雑なムーブは不要となり遥かにシンプルになる
それはそれで一つの考え方だが、Rustはそういう言語ではないと思っているのだろう?
最適化の観点抜きで機能的に他でカバーできるから不要と言ってしまうと、
例えばオブジェクトは全部ヒープに置いてスマポの所有権移動だけにしてしまえば複雑なムーブは不要となり遥かにシンプルになる
それはそれで一つの考え方だが、Rustはそういう言語ではないと思っているのだろう?
2025/08/24(日) 12:08:19.32ID:veJK4T2Q
返却された値がスタック上でどう扱われるかというのは言語仕様でなく最適化の問題だから、そこはRustではなくLLVMの話
言語仕様としては「Rustではタプルを簡単に作れる」「タプルの中身を別々の変数に束縛できる」というだけ
多値返却の目的からすればこれで十分だし、多くの言語はこれに相当する
Goは本当に多値返却という仕様で、これはタプルを返すのとは違う
そもそもタプルが言語仕様になくて、関数の返り値でだけ多値を返せるという変わった仕様
だから、2つの戻り値を返す関数を1変数で受け取ることができなかったりする
(Rustでいえば「戻り値を分解せず1つのタプル変数 t で受け取る -> t.0, t.1 のようにアクセスする」という書き方がGoではできない)
だから言語仕様としての話をしたいのか、「関数から複数の戻り値を返す」という目的の話をしたいのかで話は変わる
後者については、最近の多くの言語ではサポートしてるし、そんなに話がズレることもない
前者の意味でなら、Rustは多値返却の構文を持つ言語とは違う
言語仕様としては「Rustではタプルを簡単に作れる」「タプルの中身を別々の変数に束縛できる」というだけ
多値返却の目的からすればこれで十分だし、多くの言語はこれに相当する
Goは本当に多値返却という仕様で、これはタプルを返すのとは違う
そもそもタプルが言語仕様になくて、関数の返り値でだけ多値を返せるという変わった仕様
だから、2つの戻り値を返す関数を1変数で受け取ることができなかったりする
(Rustでいえば「戻り値を分解せず1つのタプル変数 t で受け取る -> t.0, t.1 のようにアクセスする」という書き方がGoではできない)
だから言語仕様としての話をしたいのか、「関数から複数の戻り値を返す」という目的の話をしたいのかで話は変わる
後者については、最近の多くの言語ではサポートしてるし、そんなに話がズレることもない
前者の意味でなら、Rustは多値返却の構文を持つ言語とは違う
2025/08/24(日) 12:16:23.06ID:aQdKZ7zp
Goの多値とRustのタプルは同じ
どちらも実装は多値として返すため多値レジスタ返しが可能ならばそうするため効率が最も優れている
関数定義もほぼ同じ
func foo() (type1, type2) {…
fn foo() -> (type1, type2) {…
どちらも実装は多値として返すため多値レジスタ返しが可能ならばそうするため効率が最も優れている
関数定義もほぼ同じ
func foo() (type1, type2) {…
fn foo() -> (type1, type2) {…
2025/08/24(日) 12:16:31.50ID:tCu5AZNy
バカなやつほど抽象度の区別ができない
バカなやつほどオレオレ定義で用語を使う
バカなやつほど主語を書かない
本当に相手にする価値があるか考えよう
改善の見込みがないバカなら何を書いても時間の無駄でしかない
バカなやつほどオレオレ定義で用語を使う
バカなやつほど主語を書かない
本当に相手にする価値があるか考えよう
改善の見込みがないバカなら何を書いても時間の無駄でしかない
2025/08/24(日) 12:26:32.12ID:95hjiUrq
多値を抽象化して機能を強化したものがタプルだもんね
だから多値でできることは全てタプルでもできるんだよ
タプルを持つ言語は機能の低い多値を別途持つ必要がない
だから多値でできることは全てタプルでもできるんだよ
タプルを持つ言語は機能の低い多値を別途持つ必要がない
2025/08/24(日) 12:50:55.19ID:veJK4T2Q
「タプルがあれば十分」は殆どのケースでは同意するけど、Goに限ってはそうする理由があるんだよ
エラーを多値で返す仕様かつ、エラー処理を明示的に書かせる思想の言語だから
value, err := foo()
のように err がコード上に表れるようにする必要があって、これはタプルだとまずい
t := foo() と書けてしまうと「タプルの2要素目がエラー」というのが見えなくなる
これは割とGo特有の事情で、Result型や例外を使う言語だとタプルでも困らない
言語仕様というのは他の部分も含めた全体的なデザインとして考えるものだから、「Rustではタプルで困らない」が正しくても、他の言語含めて全てそうだとは言えない
エラーを多値で返す仕様かつ、エラー処理を明示的に書かせる思想の言語だから
value, err := foo()
のように err がコード上に表れるようにする必要があって、これはタプルだとまずい
t := foo() と書けてしまうと「タプルの2要素目がエラー」というのが見えなくなる
これは割とGo特有の事情で、Result型や例外を使う言語だとタプルでも困らない
言語仕様というのは他の部分も含めた全体的なデザインとして考えるものだから、「Rustではタプルで困らない」が正しくても、他の言語含めて全てそうだとは言えない
2025/08/24(日) 12:56:30.01ID:9a3ehhoR
>>49
>バカなやつほど抽象度の区別ができない
>バカなやつほどオレオレ定義で用語を使う
>バカなやつほど主語を書かない
汚コーダーの特徴が濃縮されてるね
3番目は「書かない」というより「書けない」だと思う
>バカなやつほど抽象度の区別ができない
>バカなやつほどオレオレ定義で用語を使う
>バカなやつほど主語を書かない
汚コーダーの特徴が濃縮されてるね
3番目は「書かない」というより「書けない」だと思う
2025/08/24(日) 13:02:12.19ID:LAWD3p/v
原始的な剥き出しの多値を扱う必要のない言語においては、タプル多値があれば多値をサポートしているという結論でいいんじゃないかな
2025/08/24(日) 13:07:02.23ID:vekMbO+E
Rustはnamed tupleもanonymous structもなくunnamed tupleで位置でアクセスするか事前に定義した型で名前でアクセスするかしかないから利便性ではモダンな他言語に一段劣る
2025/08/24(日) 13:18:17.18ID:kBf9AmUd
>>54
これ便利だと思う?
# まずnamedtuple関数をインポートします
from collections import namedtuple
# 次にNamed Tupleを定義します
Point = namedtuple('Point', ['x', 'y'])
# そしてインスタンスを作ります
p = Point(10, 20)
# 名前でアクセスできるようになります
print(p.x) # Output: 10
print(p.y) # Output: 20
これ便利だと思う?
# まずnamedtuple関数をインポートします
from collections import namedtuple
# 次にNamed Tupleを定義します
Point = namedtuple('Point', ['x', 'y'])
# そしてインスタンスを作ります
p = Point(10, 20)
# 名前でアクセスできるようになります
print(p.x) # Output: 10
print(p.y) # Output: 20
2025/08/24(日) 13:28:22.18ID:fUN48E4b
>>51
いや、エラーに限らずt.0とか普通に可読性最悪だからね
多値をタプルとして実装するなら、即時の分割代入を必須とするか、もしくはC#のようにpositionalなタプルと互換性のあるnamed tupleとするか、どちらかは必須
いや、エラーに限らずt.0とか普通に可読性最悪だからね
多値をタプルとして実装するなら、即時の分割代入を必須とするか、もしくはC#のようにpositionalなタプルと互換性のあるnamed tupleとするか、どちらかは必須
2025/08/24(日) 13:41:09.97ID:uDNIRrgr
必要となるまでは1つのまとまりとして一括して扱えたほうが有利
必要になったところでパターンマッチングさせて個別に用いる
必要になったところでパターンマッチングさせて個別に用いる
2025/08/24(日) 13:49:22.14ID:+tDfyqBW
Rustは必要なところではパターンマッチングできるから不便なことはないよな
2025/08/24(日) 13:56:11.80ID:fUN48E4b
取得から消費までのコード上の距離が離れるほど人間の短期記憶の負担になり可読性が低下する
複おじは特に頭悪いから実感してるんじゃない?
複おじは特に頭悪いから実感してるんじゃない?
2025/08/24(日) 14:11:41.28ID:0UxuBUhy
let (unko, chinko) = unkochinko
とか突然出てきてunkochinkoの宣言が離れてたら、合ってるのか不安を感じてつい宣言までスクロールしちゃうわ
離れた場所での位置依存は普通に可読性最悪
とか突然出てきてunkochinkoの宣言が離れてたら、合ってるのか不安を感じてつい宣言までスクロールしちゃうわ
離れた場所での位置依存は普通に可読性最悪
2025/08/24(日) 14:14:05.68ID:ieA/MpG4
>>56
ジェネリックに意味を持たない局面もあるからそこでt.0を使うのは適してる
意味がある局面なら例えばfor (index, name) in ...や|(index, name)| ...のように使われるから名前でアクセスできる
ジェネリックに意味を持たない局面もあるからそこでt.0を使うのは適してる
意味がある局面なら例えばfor (index, name) in ...や|(index, name)| ...のように使われるから名前でアクセスできる
62デフォルトの名無しさん
2025/08/24(日) 14:15:37.70ID:veJK4T2Q >>56
C#も分割代入しない書き方はできるじゃん
その場合の可読性はPythonもC++もC#もそう変わらないかと (t[0], get<0>(t), t.Item1)
意味のある名前を付けたいなら、それはRustでもstructを定義すれば済む話だし
C#の匿名クラスの便利さもまあ分かるけど、あれば嬉しいくらいで、個人的には必須とまでは思わない
C#も分割代入しない書き方はできるじゃん
その場合の可読性はPythonもC++もC#もそう変わらないかと (t[0], get<0>(t), t.Item1)
意味のある名前を付けたいなら、それはRustでもstructを定義すれば済む話だし
C#の匿名クラスの便利さもまあ分かるけど、あれば嬉しいくらいで、個人的には必須とまでは思わない
2025/08/24(日) 14:18:45.06ID:m/1beq6h
>>62
C#には匿名型とは別にnamed tupleがあって、positional tupleと互換性を持ったままフィールドに名前を付けられる
C#には匿名型とは別にnamed tupleがあって、positional tupleと互換性を持ったままフィールドに名前を付けられる
2025/08/24(日) 14:23:02.15ID:VS0PssfI
>>55
named tupleの定義が面倒&カッコ悪いな
named tupleの定義が面倒&カッコ悪いな
2025/08/24(日) 14:40:44.45ID:f2gy7gmS
Pythonの名前付きタプルは普通に使いにくいからな…
その用途なら dataclass にしとけ、というのが共通認識だと思う
その用途なら dataclass にしとけ、というのが共通認識だと思う
2025/08/24(日) 17:03:59.99ID:apxru5vn
>>55
それは文法としてnamed tupleをサポートしてないからだよ
サポートしてれば下のように書ける
def foo() -> (x: int, y: int):
return (x: 10, y: 20)
p = foo()
print(p.x, p.y)
x, y = foo()
print(x, y)
それは文法としてnamed tupleをサポートしてないからだよ
サポートしてれば下のように書ける
def foo() -> (x: int, y: int):
return (x: 10, y: 20)
p = foo()
print(p.x, p.y)
x, y = foo()
print(x, y)
2025/08/24(日) 17:15:02.39ID:7zDT8kXu
事実と意見を区別しろ
前提を明確に示せ
異なる前提に依存する結論を無理に適用するな
前提を明確に示せ
異なる前提に依存する結論を無理に適用するな
2025/08/24(日) 17:48:30.01ID:+zGYyK0c
2025/08/24(日) 18:53:52.96ID:xPc+Pkry
2025/08/24(日) 19:23:45.82ID:o5OQy7cK
let (manko, chinko) = foo(); // 本当のfoo()の返す中身は(chinko, manko)
が許されるから、それって嫌だよねって話じゃないの?
が許されるから、それって嫌だよねって話じゃないの?
2025/08/24(日) 19:32:58.00ID:lcXQ4DrV
2025/08/24(日) 19:44:34.69ID:PRkNyipX
別なら構造体を定義しろ
2025/08/24(日) 22:32:48.16ID:O8wAGFa3
2025/08/25(月) 06:47:36.11ID:E2rxLwdP
2025/08/25(月) 08:15:32.90ID:foAG4KWU
多値戻しは_をサポートしてなければコーダーにとってはどうでもいい話じゃないんかね。
最適化機会を明示できるかどうかくらいじゃね?
最適化機会を明示できるかどうかくらいじゃね?
2025/08/25(月) 10:18:01.04ID:hSk6qQ9G
ながめてるとたしかに_多いな
>fn f(init: &str, n: usize) -> String {
> let mut list = init.chars().rev().collect::<Vec<_>>();
> for _ in 1..n {
> if let Some((pre_index, (_, old))) = list.iter().tuple_windows().enumerate().find(|(_, (pre, cur))| pre > cur) {
> let old_index = pre_index + 1;
> let (new_index, _) = list.iter().enumerate().find(|(_, cur)| cur > &old).unwrap();
> list.swap(old_index, new_index);
> list[..old_index].reverse();
> }
> }
> list.into_iter().rev().collect()
>}
>fn f(init: &str, n: usize) -> String {
> let mut list = init.chars().rev().collect::<Vec<_>>();
> for _ in 1..n {
> if let Some((pre_index, (_, old))) = list.iter().tuple_windows().enumerate().find(|(_, (pre, cur))| pre > cur) {
> let old_index = pre_index + 1;
> let (new_index, _) = list.iter().enumerate().find(|(_, cur)| cur > &old).unwrap();
> list.swap(old_index, new_index);
> list[..old_index].reverse();
> }
> }
> list.into_iter().rev().collect()
>}
2025/08/25(月) 12:25:47.76ID:lo8Kz+ZF
タプルの片方は途中不要で最後に必要だが、もう片方はその逆とかよくあるある。
後者のfind()はposition()に置き換えられるが、二つのfindが対称形の処理ぽいのでそのままでもいいか。
後者のfind()はposition()に置き換えられるが、二つのfindが対称形の処理ぽいのでそのままでもいいか。
2025/08/25(月) 15:50:58.87ID:4Ejmg1ls
まだ多値の話してる・・・
2025/08/25(月) 16:13:59.05ID:M76UE5qm
このスレはあくまで複おじのファンスレッドだから
複おじの興味が続けばその話題が続くんだよ
複おじの興味が続けばその話題が続くんだよ
2025/08/25(月) 21:09:46.97ID:KzDmCwhz
ファンじゃなくて自演スレだから
2025/08/27(水) 18:45:58.51ID:s/5KNF71
タプルといえばzipとmultizipの方針の違いでVec指定の与え方が微妙差
let (counts, chars) = str.chars().sorted().dedup_with_count().unzip::<_, _, Vec<_>, Vec<_>>();
let (counts, chars) = str.chars().sorted().dedup_with_count().multiunzip::<(Vec<_>, Vec<_>)>();
let (counts, chars) = str.chars().sorted().dedup_with_count().unzip::<_, _, Vec<_>, Vec<_>>();
let (counts, chars) = str.chars().sorted().dedup_with_count().multiunzip::<(Vec<_>, Vec<_>)>();
2025/08/28(木) 10:55:22.21ID:OS0cfYx9
抽象なんて「見たいものだけを見る」という程度の意味だからね
もしメモリ管理が最大の関心事なら
抽象度が最も高いIUnknownにリファレンスカウント機能をつけていい
もしメモリ管理が最大の関心事なら
抽象度が最も高いIUnknownにリファレンスカウント機能をつけていい
2025/08/28(木) 11:58:26.45ID:1IatnfJ+
2025/08/28(木) 15:40:44.35ID:OS0cfYx9
なんで掛け算の引数には名前がないんだろう
順序を逆にできない理由が一目でわかるような名前があるなら名前をつけるべき
順序を逆にできない理由が一目でわかるような名前があるなら名前をつけるべき
2025/08/28(木) 20:43:02.31ID:fdP0HyCm
2025/08/30(土) 05:57:20.14ID:JBC8dN2M
a * b * c
は b や c のすぐ隣に目印があるからキーワード引数は不要だ
mul(a, b, c)
(* a b c)
このような記法だけが、b c 付近で文法的サポートが不足している問題を抱えている
は b や c のすぐ隣に目印があるからキーワード引数は不要だ
mul(a, b, c)
(* a b c)
このような記法だけが、b c 付近で文法的サポートが不足している問題を抱えている
2025/08/30(土) 23:22:46.71ID:6bFj+97W
>>55
namedtupleは廃れて今はdataclassを使う
Rustでの#[derive(Debug, Hash, Ord)]付き構造体相当
結局Pythonでもそのへんはちゃんとしてほしいことになった
namedtupleは廃れて今はdataclassを使う
Rustでの#[derive(Debug, Hash, Ord)]付き構造体相当
結局Pythonでもそのへんはちゃんとしてほしいことになった
2025/08/31(日) 09:51:10.58ID:cF2U6lLu
ハッシュ関数を使えば保守的GCが廃れる
確率を見たらカオスと思え
確率を見たらカオスと思え
2025/08/31(日) 10:00:25.50ID:mJd+1ya1
>結局Pythonでもそのへんはちゃんとしてほしいことになった
誰か日本語に翻訳して
誰か日本語に翻訳して
2025/08/31(日) 10:52:20.39ID:QUPYnWaR
足りない頭で必死に調べた複おじの努力を認めて差し上げろ
それはともかく、一般にスクリプト言語ではタプルはあまり好まれず、辞書が好まれる傾向がある
- ユーザーが辞書データ構造を使ってレコードを扱うことに慣れている
- 辞書を扱うための簡便な構文が存在する場合が多い
- 辞書と配列の速度やメモリ使用量の差が問題にならない
- 値が増えた場合にランタイムエラーを引き起こす
なお、dataclassは辞書に対する型付きのラッパーに過ぎない
あくまでこれはスクリプト言語の事情であり、Rustのような静的言語においてはレコードはタプル(構造体は名前付きのタプルの一種)として実装することが基本であることに注意しなければならない
それはともかく、一般にスクリプト言語ではタプルはあまり好まれず、辞書が好まれる傾向がある
- ユーザーが辞書データ構造を使ってレコードを扱うことに慣れている
- 辞書を扱うための簡便な構文が存在する場合が多い
- 辞書と配列の速度やメモリ使用量の差が問題にならない
- 値が増えた場合にランタイムエラーを引き起こす
なお、dataclassは辞書に対する型付きのラッパーに過ぎない
あくまでこれはスクリプト言語の事情であり、Rustのような静的言語においてはレコードはタプル(構造体は名前付きのタプルの一種)として実装することが基本であることに注意しなければならない
2025/08/31(日) 17:32:35.66ID:qrCON/OK
辞書かどうかは本質ではない
辞書として用いないことが圧倒的に多いため例えばV8では静的解析で判明するプロパティを構造体フィールドのように扱い実行するため辞書実装とは異なり速い
辞書として用いないことが圧倒的に多いため例えばV8では静的解析で判明するプロパティを構造体フィールドのように扱い実行するため辞書実装とは異なり速い
2025/08/31(日) 18:15:49.65ID:IkR/a1qs
また的外れなレスだなぁ
結局複おじにもそのへんはちゃんとしてほしいことになった
結局複おじにもそのへんはちゃんとしてほしいことになった
2025/08/31(日) 18:20:32.10ID:yY4/9rZW
>>91
V8のプロパティアクセスの最適化は基本的には静的解析に依存しないよ
同じプロパティが同じ順序で追加されたオブジェクトは同じ型と見做してキャッシュされたプロパティの位置を利用する
あくまで辞書データ構造を前提としたままでキャッシュ戦略を工夫しているに過ぎない
V8のプロパティアクセスの最適化は基本的には静的解析に依存しないよ
同じプロパティが同じ順序で追加されたオブジェクトは同じ型と見做してキャッシュされたプロパティの位置を利用する
あくまで辞書データ構造を前提としたままでキャッシュ戦略を工夫しているに過ぎない
2025/08/31(日) 23:19:02.35ID:cF2U6lLu
魔法の数字ではなく
ちゃんとenumを使うことになった
ちゃんとenumを使うことになった
2025/08/31(日) 23:24:15.68ID:Dds/cnqW
Minimal Embedded FAT32 Driver - in Rust!
https://www.youtube.com/watch?v=VcWXn8B9RoE
https://www.youtube.com/watch?v=VcWXn8B9RoE
96デフォルトの名無しさん
2025/09/02(火) 22:34:52.76ID:sEJ6dDWm 「Rust」の平均単価が3カ月連続上昇 エン・ジャパンがフリーランス案件の分析レポートを発表
https://atmarkit.itmedia.co.jp/ait/spv/2508/21/news045.html
開発言語別では、比較的新しい言語「Rust」が3カ月連続で平均単価を伸ばし、87万4000円(2025年6月比で4.4%増)で1位となった。
https://atmarkit.itmedia.co.jp/ait/spv/2508/21/news045.html
開発言語別では、比較的新しい言語「Rust」が3カ月連続で平均単価を伸ばし、87万4000円(2025年6月比で4.4%増)で1位となった。
2025/09/03(水) 01:10:14.83ID:rmZ6WmxL
もういいよ
2025/09/03(水) 06:18:41.58ID:Myuv+TwW
Rustがトップになる予想が当たったね
2025/09/03(水) 08:43:05.32ID:Ypa4ifGO
これからどんどん増えるで
レスを投稿する
ニュース
- 【速報】習主席とトランプ大統領が電話会談 台湾問題について [ニョキニョキ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★2 [ぐれ★]
- 人生初黒星の神童、那須川天心がリング上で土下座 [牛丼★]
- 中国人「『日本は危ないから行かないように』と言われたが、日本に来たらとても安全だった」 [お断り★]
- 毛寧(もう・ねい)報道官 「日本は実際の行動で対話への誠意を示すべき」 中国、高市首相に改めて発言撤回を要求 [ぐれ★]
- お布施の75%が葬儀社の手数料に 価格表を入手 僧侶も警鐘 [ぐれ★]
- ネトウヨの本心「ぶっちゃけLGBT推進を取り消すとか自分に関係ないしどうでもいい。そんな事よりJK、JCとヤッてもOKな世の中に戻せ!」 [377482965]
- 「琉球有事は中国有事」 中国のネトウヨが拡散 これには日本のネトウヨ叩きのめされる [241672384]
- 【号外】習近平、米大統領のトランプと首脳会談を行う!日本のの武力による台湾脅しついて共有の追及をする意思統一でおこなう [339712612]
- ミャンマー軍事政権「日本にはアジアで犯した罪に対する反省や責任感がない」高市答弁を批判 [834922174]
- まったりおじゃる丸待機スレ🏡
- 【速報】高市「アタシぜっったい謝らないからッ!!」→中国焦る [308389511]
