公式
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 part28
https://mevius.5ch.net/test/read.cgi/tech/1742805420/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part29
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2025/05/03(土) 00:47:30.13ID:phVJ5tWC2025/05/04(日) 22:33:13.89ID:YbSG8qnS
>>74
ストローマン論法をやめなされ
初期化関数を使うと指定の重複、順序ミス、記述漏れが起こりにくいのは事実だろう
まず単純な初期化関数で指定の重複が起こるのか?
func( a,b,c,d....にたいしてaを重複指定させられるのか?
これすら判らないなら話すだけ無駄
ストローマン論法をやめなされ
初期化関数を使うと指定の重複、順序ミス、記述漏れが起こりにくいのは事実だろう
まず単純な初期化関数で指定の重複が起こるのか?
func( a,b,c,d....にたいしてaを重複指定させられるのか?
これすら判らないなら話すだけ無駄
2025/05/04(日) 22:35:21.33ID:YbSG8qnS
「~しなされ」っていうのって少なくとも80歳以上じゃないかと
2025/05/04(日) 22:42:41.94ID:abvIudxv
>>76
derive_builderで提供された場合も問題は起きないよね
仮にそのaを重複指定してしまい
.a(123)
.a(123)
と書いてもバグは起きない
可読性もよいからそれ自体を起こさないね
derive_builderは提供側も利用側もデメリットがなく最も良い方法にみえる
もっと良い方がある?
derive_builderで提供された場合も問題は起きないよね
仮にそのaを重複指定してしまい
.a(123)
.a(123)
と書いてもバグは起きない
可読性もよいからそれ自体を起こさないね
derive_builderは提供側も利用側もデメリットがなく最も良い方法にみえる
もっと良い方がある?
2025/05/04(日) 22:44:40.17ID:YbSG8qnS
2025/05/04(日) 22:50:43.73ID:abvIudxv
>>79
aを123で初期化したいなら前者しか起きようがない
aを321で初期化したいなら後者しか起きようがない
そんなナンセンスな指摘しかデメリットらしきものを見つけることが出来なかったということは
derive_builderが最も良い方法であることを認めたと理解してよろしいか
aを123で初期化したいなら前者しか起きようがない
aを321で初期化したいなら後者しか起きようがない
そんなナンセンスな指摘しかデメリットらしきものを見つけることが出来なかったということは
derive_builderが最も良い方法であることを認めたと理解してよろしいか
2025/05/04(日) 22:50:51.74ID:V3G8dKZI
the bookによるとnewtypeパターンってのがあって
traitをimplすることが目的みたいだけど
どうにかすれば名前つき引数にも使えそうなんだよね
traitをimplすることが目的みたいだけど
どうにかすれば名前つき引数にも使えそうなんだよね
2025/05/04(日) 22:51:05.55ID:YbSG8qnS
順序ミスについて
これは前スレでも書いたのを再掲
.G(p[0]).R(p[1]).B(p[2]).build()
のところを容易に
.R(p[0]).G(p[1]).B(p[2]).build()と間違えて
さらに
.R(p[0]).R(p[1]).B(p[2]).build()と間違える
色指定でよく目にするのはRGB方式だけどコンピュータービジョンなどではBRGがよく使われる
最初にGRBとして覚えていても実際各段階になるとRGBと混同することがある
初期化関数では
func(P[0],P[1],P[2],...
等で考えなくても書き間違える可能性が低い それにIDEの補助でパラメーターについてポップアップが出るのでそれでも間違いは減る
バグに気が付いて書き直す際に2か所の書き換えをしないで
.R(p[0]).R(p[1]).B(p[2]).build() と言う間違いも入り込みやすい
これは前スレでも書いたのを再掲
.G(p[0]).R(p[1]).B(p[2]).build()
のところを容易に
.R(p[0]).G(p[1]).B(p[2]).build()と間違えて
さらに
.R(p[0]).R(p[1]).B(p[2]).build()と間違える
色指定でよく目にするのはRGB方式だけどコンピュータービジョンなどではBRGがよく使われる
最初にGRBとして覚えていても実際各段階になるとRGBと混同することがある
初期化関数では
func(P[0],P[1],P[2],...
等で考えなくても書き間違える可能性が低い それにIDEの補助でパラメーターについてポップアップが出るのでそれでも間違いは減る
バグに気が付いて書き直す際に2か所の書き換えをしないで
.R(p[0]).R(p[1]).B(p[2]).build() と言う間違いも入り込みやすい
2025/05/04(日) 22:53:00.11ID:YbSG8qnS
書いてるそばから間違えている
BGRが正しい
BGRが正しい
2025/05/04(日) 22:55:04.07ID:YbSG8qnS
2025/05/04(日) 22:57:59.52ID:abvIudxv
>>82
その比較はおかしい
デフォルト値以外のみを指定して初期化する話なのだから
それは✕ func(P[0], P[1], P[2],...
これが○ func(R=P[0], G=P[1], B=P[2], ...
その比較はおかしい
デフォルト値以外のみを指定して初期化する話なのだから
それは✕ func(P[0], P[1], P[2],...
これが○ func(R=P[0], G=P[1], B=P[2], ...
2025/05/04(日) 23:00:32.68ID:YbSG8qnS
記述漏れについては
n個パラメーターを指定しないといけないのにn-1個しか記述していない場合
目で見てn個すべて指定したのかn-1個指定したのかなんて数が多くなると判らない
これは初期化関数では基本的に起こらない
数が多いとやはり大変だけどIDEの補助があったりコンパイル時にエラーがでる
ビルダーパターンでは実行時エラーや思った挙動にならない時点でしかミスに気が付かない
n個パラメーターを指定しないといけないのにn-1個しか記述していない場合
目で見てn個すべて指定したのかn-1個指定したのかなんて数が多くなると判らない
これは初期化関数では基本的に起こらない
数が多いとやはり大変だけどIDEの補助があったりコンパイル時にエラーがでる
ビルダーパターンでは実行時エラーや思った挙動にならない時点でしかミスに気が付かない
2025/05/04(日) 23:01:35.79ID:YbSG8qnS
2025/05/04(日) 23:05:28.74ID:YbSG8qnS
これ以降ストローマン論法禁止
2025/05/04(日) 23:05:37.33ID:hRPtBNkv
オプション値の初期化の話だもんな
必須値の初期化の話ならRustでも
fn foo(red: Type, green: Type, blue: Type)
とするだけなのでderive_builderは使わない
だから>>82の指摘は間違ってる
必須値の初期化の話ならRustでも
fn foo(red: Type, green: Type, blue: Type)
とするだけなのでderive_builderは使わない
だから>>82の指摘は間違ってる
2025/05/04(日) 23:09:07.67ID:YbSG8qnS
2025/05/04(日) 23:11:26.83ID:YbSG8qnS
生成に柔軟性があり複雑な場合にはビルダーパターンを適用するのは良い
一般的なオブジェクト生成に対してはヒューマンエラーに弱くアンチパターン
一般的なオブジェクト生成に対してはヒューマンエラーに弱くアンチパターン
2025/05/04(日) 23:13:07.88ID:abvIudxv
>>87
プログラミングの基本的なことを理解していないのかい?
derive_builderを使うようなオプションで必要な項目だけ値を指定して初期化するケースを1つの初期化関数を単体で済ませようとすると
どんなプログラミング言語でもキーワード付きオプション引数を使うことになる
具体的にはf(1, 2, 3, option1=111, option5=222)などの指定方式になる
option5など名前を指定しないとどの項目を指定しているのか区別がつかないためだ
プログラミングの基本的なことを理解していないのかい?
derive_builderを使うようなオプションで必要な項目だけ値を指定して初期化するケースを1つの初期化関数を単体で済ませようとすると
どんなプログラミング言語でもキーワード付きオプション引数を使うことになる
具体的にはf(1, 2, 3, option1=111, option5=222)などの指定方式になる
option5など名前を指定しないとどの項目を指定しているのか区別がつかないためだ
2025/05/04(日) 23:15:31.49ID:YbSG8qnS
2025/05/04(日) 23:20:45.80ID:hRPtBNkv
>>91
オプション初期化のない一般的なオブジェクト生成でderive_builderを使う人はそりゃいないよ
それは普通にRustでも引数固定の初期化関数でおしまい
前スレを読んだけど最初から特定項目だけオプション初期化する話
だからderive_builderが最も優れているという結論になってる
オプション初期化のない一般的なオブジェクト生成でderive_builderを使う人はそりゃいないよ
それは普通にRustでも引数固定の初期化関数でおしまい
前スレを読んだけど最初から特定項目だけオプション初期化する話
だからderive_builderが最も優れているという結論になってる
2025/05/04(日) 23:21:18.11ID:YbSG8qnS
>>94
重複すら検知できないのに?
重複すら検知できないのに?
2025/05/04(日) 23:26:47.62ID:YbSG8qnS
重複を検知するには内部にフラグを持たなくてはならない
もちろんこれは実行時エラーになる
もちろんこれは実行時エラーになる
2025/05/04(日) 23:30:18.53ID:YbSG8qnS
実行時エラーを検出するにはテストで網羅しなくてはならない
2025/05/04(日) 23:40:27.55ID:YbSG8qnS
我々はコンパイル時にエラーが検出されるのを利点としてRustを使っている
それなのに実行時エラーに頼らざるを得ないビルダーパターンは劣っている
それなのに実行時エラーに頼らざるを得ないビルダーパターンは劣っている
2025/05/04(日) 23:45:58.01ID:GqHoJEAc
結局、話をまとめると
ビルダーパターンで
foo()
.item1(value1)
.item3(value3)
.item7(value7)
と書くか
名前付きオプション引数で
foo(
item1=value1,
item3=value3,
item7=value7,
)
と書くか
これだけの違いだよな
どちらも変わらん慣れだけの問題
どちらも見た通りなので指定ミスや重複ミスなど起きようがない
あとはそれらを提供するライブラリ側だ
いずれも普通は初期化関数を自分で書かなければならない
Rustでderive_builderを使えば構造体に属性を付けるだけで済みシンプルかつミスも起きない
少なくとも現状でderive_builderに欠点は見つかっておらず最善な方法であるといえる
ビルダーパターンで
foo()
.item1(value1)
.item3(value3)
.item7(value7)
と書くか
名前付きオプション引数で
foo(
item1=value1,
item3=value3,
item7=value7,
)
と書くか
これだけの違いだよな
どちらも変わらん慣れだけの問題
どちらも見た通りなので指定ミスや重複ミスなど起きようがない
あとはそれらを提供するライブラリ側だ
いずれも普通は初期化関数を自分で書かなければならない
Rustでderive_builderを使えば構造体に属性を付けるだけで済みシンプルかつミスも起きない
少なくとも現状でderive_builderに欠点は見つかっておらず最善な方法であるといえる
100デフォルトの名無しさん
2025/05/04(日) 23:55:20.08ID:YbSG8qnS101デフォルトの名無しさん
2025/05/04(日) 23:58:47.69ID:GqHoJEAc 的外れな言いがかりでスレを荒らしてる人は
derive_builderより良い方法を具体的にコードで示せ
derive_builderより良い方法を具体的にコードで示せ
102デフォルトの名無しさん
2025/05/04(日) 23:59:41.54ID:YbSG8qnS 精神論で間違いは発生しないと言うのは容易
間違えたら間違えた人間が悪いと言う
ビルダーパターンには結局ヒューマンエラーを防ぐように十分な対策がなされていないだろ
わかっていながら無視をする
c++精神だね
間違えたら間違えた人間が悪いと言う
ビルダーパターンには結局ヒューマンエラーを防ぐように十分な対策がなされていないだろ
わかっていながら無視をする
c++精神だね
103デフォルトの名無しさん
2025/05/05(月) 00:00:40.76ID:jqQPAhm/104デフォルトの名無しさん
2025/05/05(月) 00:03:11.76ID:jqQPAhm/ ビルダーパターンはヒューマンエラーに弱い
毎回論理的構造を構築しなければならないがそこにバグが紛れ込む可能性がある
それよりも初期化のための関数を作るべき
毎回論理的構造を構築しなければならないがそこにバグが紛れ込む可能性がある
それよりも初期化のための関数を作るべき
105デフォルトの名無しさん
2025/05/05(月) 00:03:28.63ID:+OgYhFfL derive_builderは全自動だからミス起きなくね?
derive_builderより好いのがあるならコードを出して
derive_builderより好いのがあるならコードを出して
106デフォルトの名無しさん
2025/05/05(月) 00:05:02.99ID:jqQPAhm/ おじいちゃんは乱心して同じことを何度も書いて来る
普通の人間にはすでに書かれた内容で理解出来るのに知らないふりして実行時エラーやバグを許容している
普通の人間にはすでに書かれた内容で理解出来るのに知らないふりして実行時エラーやバグを許容している
107デフォルトの名無しさん
2025/05/05(月) 00:06:42.46ID:jqQPAhm/ これも相手の疲労を狙ってくるくだらないやり口なんだろうと思うが
108デフォルトの名無しさん
2025/05/05(月) 00:07:25.49ID:H9yekDq7109デフォルトの名無しさん
2025/05/05(月) 00:08:38.62ID:jqQPAhm/ 他のスレでもでもおじいちゃん的書き込みを見ることがある
それに対して80代ではと書くと100%反論される
今回は反論されないところを見るとやはり80代以上なんだろうなと
それに対して80代ではと書くと100%反論される
今回は反論されないところを見るとやはり80代以上なんだろうなと
110デフォルトの名無しさん
2025/05/05(月) 00:09:40.80ID:jqQPAhm/111デフォルトの名無しさん
2025/05/05(月) 00:10:41.78ID:Eyx6FHs7 Builderはオプションの追加実装が破壊的な変更にならないメリットがあるな
生成関数に全部渡す方式だとパラメータが増えて破壊的になる
新しい生成関数を追加すれば破壊的にはならないけど
オプション追加する度に生成関数増やすのはあほくさい
>>103
もし暇だったら↓のRegexBuilderをFactoryで実装する場合の関数の個数を見積もってくれ
https://docs.rs/regex/latest/regex/struct.RegexBuilder.html
生成関数に全部渡す方式だとパラメータが増えて破壊的になる
新しい生成関数を追加すれば破壊的にはならないけど
オプション追加する度に生成関数増やすのはあほくさい
>>103
もし暇だったら↓のRegexBuilderをFactoryで実装する場合の関数の個数を見積もってくれ
https://docs.rs/regex/latest/regex/struct.RegexBuilder.html
112デフォルトの名無しさん
2025/05/05(月) 00:12:00.84ID:H9yekDq7113デフォルトの名無しさん
2025/05/05(月) 00:15:57.46ID:jqQPAhm/ なんで自分にレスしてんの?
114デフォルトの名無しさん
2025/05/05(月) 00:19:17.48ID:jqQPAhm/115デフォルトの名無しさん
2025/05/05(月) 00:20:28.67ID:jqQPAhm/ Rustしか使ったことがない前提なのかな
さすがに馬鹿の相手をするのは疲れてきた…
さすがに馬鹿の相手をするのは疲れてきた…
116デフォルトの名無しさん
2025/05/05(月) 00:21:44.77ID:jqQPAhm/ おじいちゃんは他の言語は使えないの?しょうもない雑魚レベルの質問しかしないのはなんで?
117デフォルトの名無しさん
2025/05/05(月) 00:29:27.74ID:J617bx8A デフォルト値に対して必要分だけオプション指定したい場合
まともな方法はどのプログラミング言語を使って>>99のどちらかの方式になる
まともではない方法としてはオプションの有無ごとの組み合わせ数の分だけ大量の関数を用意する手もあるけど論外だ
まともな方法はどのプログラミング言語を使って>>99のどちらかの方式になる
まともではない方法としてはオプションの有無ごとの組み合わせ数の分だけ大量の関数を用意する手もあるけど論外だ
118デフォルトの名無しさん
2025/05/05(月) 00:41:54.17ID:jqQPAhm/ 何で間違ってることを繰り返すの?
macroで重複チェック可能なbuilderは書けるとか書いてこないのは意外なんだけど
macroで重複チェック可能なbuilderは書けるとか書いてこないのは意外なんだけど
119デフォルトの名無しさん
2025/05/05(月) 00:53:11.08ID:jqQPAhm/ 実行時チェックの話もchatGPTの方がまともで面白い回答や提案をしてくれる
120デフォルトの名無しさん
2025/05/05(月) 00:56:27.23ID:Eyx6FHs7121デフォルトの名無しさん
2025/05/05(月) 01:00:46.13ID:EffckoF6 一部の必須値の設定を忘れるケースは普通にあるでしょ
122デフォルトの名無しさん
2025/05/05(月) 01:09:30.63ID:v8V26/QO >>121
必須値は様々な対応が取れるため問題は起きない
・オプションにしない
・全体の整合チェックの一貫として必須値の有無の判断を入れる
・ビルド最終メソッドで指定する (ex. std::fs::OpenOptions::open)
必須値は様々な対応が取れるため問題は起きない
・オプションにしない
・全体の整合チェックの一貫として必須値の有無の判断を入れる
・ビルド最終メソッドで指定する (ex. std::fs::OpenOptions::open)
123デフォルトの名無しさん
2025/05/05(月) 01:17:39.76ID:Eyx6FHs7 一番オーソドックスなのが抜けてるな
RegexBuilderの場合はRegexBuilder::new()にパターン文字列を渡してる
RegexBuilderの場合はRegexBuilder::new()にパターン文字列を渡してる
124デフォルトの名無しさん
2025/05/05(月) 01:21:35.04ID:v8V26/QO125デフォルトの名無しさん
2025/05/05(月) 08:29:59.12ID:EffckoF6 名前付き引数であれば必須パラメータも名前付きで渡せるため順番の間違いによるミスが発生しづらく可読性も高い
derive_builderを使う以上は必須パラメータもメソッドで渡すしかなく実行時エラーの可能性が排除できないしチェックのために余計なランタイムコストを払う必要がある
文句はderive_builder作者に言ってきた方がいいぞ
derive_builderを使う以上は必須パラメータもメソッドで渡すしかなく実行時エラーの可能性が排除できないしチェックのために余計なランタイムコストを払う必要がある
文句はderive_builder作者に言ってきた方がいいぞ
126デフォルトの名無しさん
2025/05/05(月) 08:39:51.80ID:jqQPAhm/ 狂信者には何を言っても無駄であり論理的な考えを持ち合わせていない
こちらがいくら論拠を提示してもRustが正しいderive_builderが正しいとそんなミスは起こりえないと繰り返すのみ
正しくないのはお前の頭だろう
こちらがいくら論拠を提示してもRustが正しいderive_builderが正しいとそんなミスは起こりえないと繰り返すのみ
正しくないのはお前の頭だろう
127デフォルトの名無しさん
2025/05/05(月) 08:41:20.98ID:PDh+rYm1 ビルド方式に問題はない
既出のstd::fs::OpenOptions::open()や
regex::RegexBuilder::new()など
Rustはビルド方式でも対応しており問題になっていない
>>125
名前付き引数であろうとなかろうとバリデーションは必要でそれは実行時エラーとなる
そしてResultを返すから実行時エラーで問題ない
既出のstd::fs::OpenOptions::open()や
regex::RegexBuilder::new()など
Rustはビルド方式でも対応しており問題になっていない
>>125
名前付き引数であろうとなかろうとバリデーションは必要でそれは実行時エラーとなる
そしてResultを返すから実行時エラーで問題ない
128デフォルトの名無しさん
2025/05/05(月) 08:42:39.33ID:S3aML2VS129デフォルトの名無しさん
2025/05/05(月) 08:45:40.37ID:jqQPAhm/130デフォルトの名無しさん
2025/05/05(月) 08:49:55.75ID:3AfvJi9A “イリヤ神”がまたやった 動画生成AI「FramePack」が革命的なワケ
2025年05月05日 07時00分更新
https://ascii.jp/elem/000/004/267/4267160/
4月17日に登場した動画生成AIプログラム「FramePack(フレームパック)」が世界的に衝撃を与えています。PCローカル環境で動画AIを動かすには、少なくともビデオメモリー(VRAM)が12GBあるビデオカードを搭載していないと難しいというのが常識でした。ところが、VRAM 6GBでも安定的に動作させられるため、一気に動画AIの裾野を広げそうです。開発したのは、画像生成AI分野で「ControlNet」や、使いやすいツール「Fooocus」などを開発してきたことで知られる、スタンフォード大学に在籍中のIllyasviel(イリヤスフィール、以下イリヤ)さん。既存の方法論にまったく違ったアプローチでブレイクスルーを引き起こす、“イリヤ神”のアプローチに再び注目が集まっています。
中略
AI動画を作ってみたいけれども、スペックが足りないために諦めていたという人が次々に自前の環境で試すようになってきました。既にワンパッケージでインストールできる環境も整えられているため、スタートも簡単です。様々なファイルをダウンロードしてくるため、初期設定は2時間くらいは見ておく必要があるものの、圧倒的にハードルが下がりました。
2025年05月05日 07時00分更新
https://ascii.jp/elem/000/004/267/4267160/
4月17日に登場した動画生成AIプログラム「FramePack(フレームパック)」が世界的に衝撃を与えています。PCローカル環境で動画AIを動かすには、少なくともビデオメモリー(VRAM)が12GBあるビデオカードを搭載していないと難しいというのが常識でした。ところが、VRAM 6GBでも安定的に動作させられるため、一気に動画AIの裾野を広げそうです。開発したのは、画像生成AI分野で「ControlNet」や、使いやすいツール「Fooocus」などを開発してきたことで知られる、スタンフォード大学に在籍中のIllyasviel(イリヤスフィール、以下イリヤ)さん。既存の方法論にまったく違ったアプローチでブレイクスルーを引き起こす、“イリヤ神”のアプローチに再び注目が集まっています。
中略
AI動画を作ってみたいけれども、スペックが足りないために諦めていたという人が次々に自前の環境で試すようになってきました。既にワンパッケージでインストールできる環境も整えられているため、スタートも簡単です。様々なファイルをダウンロードしてくるため、初期設定は2時間くらいは見ておく必要があるものの、圧倒的にハードルが下がりました。
131デフォルトの名無しさん
2025/05/05(月) 08:51:02.82ID:jqQPAhm/132デフォルトの名無しさん
2025/05/05(月) 08:51:16.55ID:RIr+9vrd >>126
Rustが間違っていると主張したいなら問題点と代替策を述べればよい
本当にそれが示せるならRustはIT大手各社も用いているため世界中にインパクトを与えられるぞ
この我々の5chのやりとりすらRust製のPingoraを経由しているほどネットインフラ各所でもRustは使われている
Rustが間違っていると主張したいなら問題点と代替策を述べればよい
本当にそれが示せるならRustはIT大手各社も用いているため世界中にインパクトを与えられるぞ
この我々の5chのやりとりすらRust製のPingoraを経由しているほどネットインフラ各所でもRustは使われている
133デフォルトの名無しさん
2025/05/05(月) 08:52:25.13ID:jqQPAhm/134デフォルトの名無しさん
2025/05/05(月) 08:53:13.86ID:jqQPAhm/ 本当に暇さえあれば関係ない話題で誤魔化そうとするよな
脳がストローマン論法で浸食されているんだろ
脳がストローマン論法で浸食されているんだろ
135デフォルトの名無しさん
2025/05/05(月) 08:53:53.74ID:S3aML2VS それよりもbuilderパターンは初期化時の情報指定漏れをコンパイルエラーにできないのがRustらしくないと思う。
136デフォルトの名無しさん
2025/05/05(月) 08:54:21.19ID:RIr+9vrd137デフォルトの名無しさん
2025/05/05(月) 08:55:05.06ID:Nqd+X/r+ >>127
なるほど、実行時に他のバリデーションするからタイプセーフでなくていいと君は考えるわけね
それはそれで一理あるが、だったら君が使うべき言語は静的型付け言語ではなくRubyなどのゆるふわ言語だな
さようなら
なるほど、実行時に他のバリデーションするからタイプセーフでなくていいと君は考えるわけね
それはそれで一理あるが、だったら君が使うべき言語は静的型付け言語ではなくRubyなどのゆるふわ言語だな
さようなら
138デフォルトの名無しさん
2025/05/05(月) 08:56:18.75ID:jqQPAhm/ ビルダーパターンで疑似カリー化が行えるのが利点なのにタプル化するって
わざわざ手足を縛ることになるけど
わざわざ手足を縛ることになるけど
139デフォルトの名無しさん
2025/05/05(月) 08:56:40.00ID:RIr+9vrd140デフォルトの名無しさん
2025/05/05(月) 08:58:33.63ID:RIr+9vrd141デフォルトの名無しさん
2025/05/05(月) 08:59:24.57ID:Nqd+X/r+ >>139
それは一部必須パラメータが依然として存在することと矛盾しない
それは一部必須パラメータが依然として存在することと矛盾しない
142デフォルトの名無しさん
2025/05/05(月) 09:01:01.47ID:jqQPAhm/143デフォルトの名無しさん
2025/05/05(月) 09:02:05.60ID:RIr+9vrd >>141
必須パラメータの事例はさっき出てただろ
>> std::fs::OpenOptions::open()
>> regex::RegexBuilder::new()
これで対応できている
誰もが使っていて問題となったことはない
必須パラメータの事例はさっき出てただろ
>> std::fs::OpenOptions::open()
>> regex::RegexBuilder::new()
これで対応できている
誰もが使っていて問題となったことはない
144デフォルトの名無しさん
2025/05/05(月) 09:04:25.68ID:RIr+9vrd145デフォルトの名無しさん
2025/05/05(月) 09:07:05.32ID:EffckoF6146デフォルトの名無しさん
2025/05/05(月) 09:07:28.43ID:jqQPAhm/147デフォルトの名無しさん
2025/05/05(月) 09:10:38.57ID:jqQPAhm/ 微妙に論点をずらしたり相手の言ってないことに対して批判したり
本当にずっとストローマン論法続けてるよなあ
複おじいさん
ストローマン論法はやめなされw
本当にずっとストローマン論法続けてるよなあ
複おじいさん
ストローマン論法はやめなされw
148デフォルトの名無しさん
2025/05/05(月) 09:11:10.84ID:RIr+9vrd >>137
Rustは静的型付けだから常にタイプセーフだよ
それらの例は引数の型が合ってなければ当然コンパイルエラーとなる
一方で引数の値が合っているかどうかは構造体の方針だから当然コンパイルエラーにできず実行時エラーとなる
Rustは静的型付けだから常にタイプセーフだよ
それらの例は引数の型が合ってなければ当然コンパイルエラーとなる
一方で引数の値が合っているかどうかは構造体の方針だから当然コンパイルエラーにできず実行時エラーとなる
149デフォルトの名無しさん
2025/05/05(月) 09:13:10.00ID:RIr+9vrd150デフォルトの名無しさん
2025/05/05(月) 09:15:12.07ID:RIr+9vrd151デフォルトの名無しさん
2025/05/05(月) 09:17:40.24ID:jqQPAhm/152デフォルトの名無しさん
2025/05/05(月) 09:24:52.62ID:RIr+9vrd153デフォルトの名無しさん
2025/05/05(月) 09:29:59.66ID:jqQPAhm/ >>152
こちらのID辿ってみたらいい
こちらのID辿ってみたらいい
154デフォルトの名無しさん
2025/05/05(月) 09:37:07.71ID:jqQPAhm/155デフォルトの名無しさん
2025/05/05(月) 10:05:55.48ID:n6fK3gUl > .R(p[0]).G(p[1]).B(p[2]).build()
これ3つとも指定が必要ならメソッドを分けるべきではないと思う
それ以前にRustのプログラミングしたことないのかメソッド大文字は置いとくにしても
この場合ならp[0]はRust的な使用方法ではないな
(r, g, b)もしくはRGB構造体で持つかその参照で持つのが普通
p[i]はなるべく避けてイテレータ時点でポインタを動かして参照で持つか小さいなら値で持つ
構造があるならその構造で持つ
そのためp[i]の形が出てきたらRustでは少し臭うため怪しみ避けられないか考える
これ3つとも指定が必要ならメソッドを分けるべきではないと思う
それ以前にRustのプログラミングしたことないのかメソッド大文字は置いとくにしても
この場合ならp[0]はRust的な使用方法ではないな
(r, g, b)もしくはRGB構造体で持つかその参照で持つのが普通
p[i]はなるべく避けてイテレータ時点でポインタを動かして参照で持つか小さいなら値で持つ
構造があるならその構造で持つ
そのためp[i]の形が出てきたらRustでは少し臭うため怪しみ避けられないか考える
156デフォルトの名無しさん
2025/05/05(月) 10:33:19.28ID:20YqVkB+157デフォルトの名無しさん
2025/05/05(月) 10:58:23.25ID:EffckoF6 >>155
> これ3つとも指定が必要ならメソッドを分けるべきではないと思う
おっ
derive_builderって必須パラメータをランタイムチェックとはいえ個別setterの形で適切に扱えるというのが重要なコンセプトなんだけど、ここにきて全否定か
> これ3つとも指定が必要ならメソッドを分けるべきではないと思う
おっ
derive_builderって必須パラメータをランタイムチェックとはいえ個別setterの形で適切に扱えるというのが重要なコンセプトなんだけど、ここにきて全否定か
158デフォルトの名無しさん
2025/05/05(月) 11:07:31.16ID:20YqVkB+ >>128
>.rgb(p[0], p[1], .p[2]).build()
重複を主張する人の場合
.rgb(p[0], p[1], .p[2]).b(3).g(4).r(5).g(6).b(7).build()
みたいな間違いが起こるんだと思うよ
>.rgb(p[0], p[1], .p[2]).build()
重複を主張する人の場合
.rgb(p[0], p[1], .p[2]).b(3).g(4).r(5).g(6).b(7).build()
みたいな間違いが起こるんだと思うよ
159デフォルトの名無しさん
2025/05/05(月) 11:07:36.46ID:aemkUy0l ボクシングには蹴り技がない
それは重要なコンセプトだと考えていた時期が俺にもありました
それは重要なコンセプトだと考えていた時期が俺にもありました
160デフォルトの名無しさん
2025/05/05(月) 11:10:17.68ID:jqQPAhm/ コンパイラでうまくいかないから規約で縛ると言うことだろ?ビルダーパターンを導入する意義とどんどん崩れていく
RGB各値は指定が必須とは限らない
defaltで各値が0指定されていて同じなら書く必要がないだう
初期化関数では場合によっては記述する必要があるけどそれも必須ではない
疑似カリー化で少しずつパラメーターの違う複数のオブジェクト生成を行う場合にも便利
RGB各値は指定が必須とは限らない
defaltで各値が0指定されていて同じなら書く必要がないだう
初期化関数では場合によっては記述する必要があるけどそれも必須ではない
疑似カリー化で少しずつパラメーターの違う複数のオブジェクト生成を行う場合にも便利
161デフォルトの名無しさん
2025/05/05(月) 11:19:55.94ID:upfK5ln+ f(
red=red,
green=green,
blue=blue,
)
f()
.red(red)
.green(green)
.blue(blue)
どちらの方式でも間違えようがないと思うんだが
ミスが起きると言ってる人はどういうミスを想定してるのだろう
red=red,
green=green,
blue=blue,
)
f()
.red(red)
.green(green)
.blue(blue)
どちらの方式でも間違えようがないと思うんだが
ミスが起きると言ってる人はどういうミスを想定してるのだろう
162デフォルトの名無しさん
2025/05/05(月) 11:28:12.80ID:jqQPAhm/ red=p[0]; //p[0]は実際はblue
green=p[1];
blue=p[0]; // コピペの修正漏れ
green=p[1];
blue=p[0]; // コピペの修正漏れ
163デフォルトの名無しさん
2025/05/05(月) 11:28:24.28ID:EffckoF6164デフォルトの名無しさん
2025/05/05(月) 11:35:07.99ID:jqQPAhm/165デフォルトの名無しさん
2025/05/05(月) 11:41:36.57ID:upfK5ln+166デフォルトの名無しさん
2025/05/05(月) 11:44:04.39ID:EffckoF6167デフォルトの名無しさん
2025/05/05(月) 11:44:39.10ID:upfK5ln+168デフォルトの名無しさん
2025/05/05(月) 11:45:55.35ID:jqQPAhm/ >>167
dataと言うバイト列の中の一部だとしたら?
dataと言うバイト列の中の一部だとしたら?
169デフォルトの名無しさん
2025/05/05(月) 11:47:59.01ID:upfK5ln+170デフォルトの名無しさん
2025/05/05(月) 11:50:23.87ID:upfK5ln+171デフォルトの名無しさん
2025/05/05(月) 11:54:15.50ID:jqQPAhm/ >>170
また真面に回答できないから適当に話をごまかして議論のための議論しようとしてる
受信データなどのバイト列から値を取り出すのは一般的だろう
必ずしも構造体の列構造とは限らない
それと数値指定無くすならコーディング規約でこう書かないとアウトですとするのか?
blue=data[ i + blue_index_offset];
red=data[ i + red_index_offset];
green=data[ i + green_index_offset];
また真面に回答できないから適当に話をごまかして議論のための議論しようとしてる
受信データなどのバイト列から値を取り出すのは一般的だろう
必ずしも構造体の列構造とは限らない
それと数値指定無くすならコーディング規約でこう書かないとアウトですとするのか?
blue=data[ i + blue_index_offset];
red=data[ i + red_index_offset];
green=data[ i + green_index_offset];
172デフォルトの名無しさん
2025/05/05(月) 12:01:19.27ID:upfK5ln+ >>171
あのさ
Rustでプログラミングしたことないの?
Rust以外でもシリアライズとデシリアライズしたことないの?
まともなプログラミングしたことある人ならRustですぐにserdeにたどりつく
あのさ
Rustでプログラミングしたことないの?
Rust以外でもシリアライズとデシリアライズしたことないの?
まともなプログラミングしたことある人ならRustですぐにserdeにたどりつく
173デフォルトの名無しさん
2025/05/05(月) 12:10:05.78ID:aemkUy0l まともな人が言ったのか人形が言ったのか全然わからない時代だ
人形が言ったにすぎないなら、そんな言葉は存在しないのと同じ
人形が言ったにすぎないなら、そんな言葉は存在しないのと同じ
174デフォルトの名無しさん
2025/05/05(月) 12:14:04.97ID:jqQPAhm/175デフォルトの名無しさん
2025/05/05(月) 12:16:46.89ID:jqQPAhm/ p[ i+0 ],p[ i+1 ],p[i +2 ]を取り出すだけのためにどれだけコーディング量を増やして
ライブラリ依存させていくのか
本当に意味不明
ライブラリ依存させていくのか
本当に意味不明
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】習主席とトランプ大統領が電話会談 台湾問題について★3 [ニョキニョキ★]
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに [ニョキニョキ★]
- 人生初黒星の神童、那須川天心がリング上で土下座 [牛丼★]
- 米中電話会談、トランプ氏は「米国側は中国にとっての台湾問題の重要性を理解する」 [1ゲットロボ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 中国人「『日本は危ないから行かないように』と言われたが、日本に来たらとても安全だった」 [お断り★]
- トランプおやびん「米中関係は極めて強固」高市早苗「」 [834922174]
- 【高市悲報】来年、習近平主席がアメリカに「国賓」として訪米。どうするんだよ高市・・・アメリカも敵に回すのか? [483862913]
- 【号外】習近平、米大統領のトランプと首脳会談を行う!日本のの武力による台湾脅しついて共有の追及をする意思統一でおこなう [339712612]
- 【悲報】八田與一容疑者、海に入って大陸へ逃げた可能性😲wwwwwwwwwww [232136196]
- 【高市悲報】トランプおやびん「偉大な指導者である習近平首席、米国は中国にとっての台湾問題の重要性を理解しています」 [115996789]
- 【速報】高市「アタシぜっったい謝らないからッ!!」→中国焦る [308389511]
