公式
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 part19
https://mevius.5ch.net/test/read.cgi/tech/1673926892/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
Rust part20
■ このスレッドは過去ログ倉庫に格納されています
2023/03/03(金) 00:45:28.73ID:vTVY069B
141デフォルトの名無しさん
2023/03/10(金) 19:17:05.20ID:ha1WEkSQ 意味の有る無しを断じるあたり幼稚やな
周り見てご覧
キミ以外はそんなとこに拘っとらんやろ?
周り見てご覧
キミ以外はそんなとこに拘っとらんやろ?
142デフォルトの名無しさん
2023/03/10(金) 19:36:05.08ID:YsUJsRqF143デフォルトの名無しさん
2023/03/10(金) 19:40:18.95ID:F+OjF9fC 好きな方使ってろバカども
前スレそれで使い潰してまだ反省してねえのか
前スレそれで使い潰してまだ反省してねえのか
144デフォルトの名無しさん
2023/03/10(金) 20:24:59.10ID:7c0jaWrI145デフォルトの名無しさん
2023/03/10(金) 21:43:27.35ID:+jgRtbOv 現在のIT業界に「代替メモリレイアウト」という概念はありますか?
146130
2023/03/10(金) 22:22:59.62ID:IYh2ezPU147デフォルトの名無しさん
2023/03/10(金) 22:39:57.98ID:IYh2ezPU148デフォルトの名無しさん
2023/03/10(金) 23:34:37.12ID:/vLExm3P 好きにしたらええ
それより前スレ埋めない?
それより前スレ埋めない?
149デフォルトの名無しさん
2023/03/10(金) 23:46:20.34ID:Ug/D0/8N >>145
「代替メモリレイアウト」という概念は聞いたことがないが悪魔の証明は無理なのでそういう概念がある可能性を完全に否定することはできない
非公式の日本語翻訳で使われてる用語みたいだけどこのスレで質問する際は公式のドキュメント(英語)を参照するようにしてね
「代替メモリレイアウト」という概念は聞いたことがないが悪魔の証明は無理なのでそういう概念がある可能性を完全に否定することはできない
非公式の日本語翻訳で使われてる用語みたいだけどこのスレで質問する際は公式のドキュメント(英語)を参照するようにしてね
150デフォルトの名無しさん
2023/03/10(金) 23:54:51.68ID:0dyEfhS9 if letを使うかlet elseを使うかはケースバイケースでどちらもありうるのだから揉めるようなことではないと思うんだよな
let elseは要らないから削除せよ!と言ってた人はここを荒らすためだけに言ってただけだと思うし
let elseは要らないから削除せよ!と言ってた人はここを荒らすためだけに言ってただけだと思うし
151デフォルトの名無しさん
2023/03/11(土) 00:35:13.78ID:fYMzQaF5 >>150
ケースバイケースだからこそ具体的な特定のケースを例にどちらがいいかを話してるんだろ
ケースバイケースだからこそ具体的な特定のケースを例にどちらがいいかを話してるんだろ
152デフォルトの名無しさん
2023/03/11(土) 00:54:45.06ID:48Pa/Qcy Rust標準ライブラリのソースを見るとよくわかるよ
let else構文はもちろん使われまくっている
可読性が良くなるからね
let else構文はもちろん使われまくっている
可読性が良くなるからね
153デフォルトの名無しさん
2023/03/11(土) 06:31:08.87ID:nd+w7sZp インストールでつまずいたのでチラ裏させてくれ
サンプルプログラムをコンパイルしたら`link.exe` not foundでコンパイルできなかった。
原因は、Build Tools for Visual Studio 2022をインストールしてしまったこと、アンインストールして
Build Tools for Visual Studio 2019をインストールしてコンパイルできた。
サンプルプログラムをコンパイルしたら`link.exe` not foundでコンパイルできなかった。
原因は、Build Tools for Visual Studio 2022をインストールしてしまったこと、アンインストールして
Build Tools for Visual Studio 2019をインストールしてコンパイルできた。
154デフォルトの名無しさん
2023/03/11(土) 11:07:27.22ID:ShQc/Olf 相も変わらず1人だけズレてるな
155デフォルトの名無しさん
2023/03/11(土) 11:07:29.53ID:phgAMXMr156デフォルトの名無しさん
2023/03/11(土) 12:18:40.44ID:JdznY9pT let-elseはパターンに合致しないと処理を継続できない場合に早期離脱(return、break、etc.)するための構文でしょ
それ以外でも使えるだろうけど逆に可読性が落ちそう
従来の言語で
if (nullable_obj == null) { continue; } // この行を書き忘れるとえらいことになる
nullable_obj.do_something();
...
みたいに書ける処理を今までのRustだと
if let Some(obj) = nullable_obj {
obj.do_something();
...
} else { // ループの末尾ならここは不要
continue;
}
か無理やりunwrapして
if nullable_obj.is_none() { continue; } // この行を書き忘れるとえらいことになる
let obj = nullable_obj.unwrap();
obj.do_something();
...
みたいに書くしかなかったけど、let-elseを使うと従来の言語に近い形で書けるようになる
let Some(obj) = nullable_obj else { continue; }; // この行を書き忘れることはできない
obj.do_something();
...
returnだと?演算子で十分な場合もあるだろうから敢えてcontinueにした
それ以外でも使えるだろうけど逆に可読性が落ちそう
従来の言語で
if (nullable_obj == null) { continue; } // この行を書き忘れるとえらいことになる
nullable_obj.do_something();
...
みたいに書ける処理を今までのRustだと
if let Some(obj) = nullable_obj {
obj.do_something();
...
} else { // ループの末尾ならここは不要
continue;
}
か無理やりunwrapして
if nullable_obj.is_none() { continue; } // この行を書き忘れるとえらいことになる
let obj = nullable_obj.unwrap();
obj.do_something();
...
みたいに書くしかなかったけど、let-elseを使うと従来の言語に近い形で書けるようになる
let Some(obj) = nullable_obj else { continue; }; // この行を書き忘れることはできない
obj.do_something();
...
returnだと?演算子で十分な場合もあるだろうから敢えてcontinueにした
157デフォルトの名無しさん
2023/03/11(土) 12:36:22.58ID:GtLfWJGz let elseはcontinueでもbreakでもreturnでもpanicでも!なら何でも使えるし使われている
returnの時にErr返しなら?を使ってもよいが
.ok_or_else(|| Error)?; とするか
elseでreturnするか
どちらが見やすいかは意見が別れそうだ
returnの時にErr返しなら?を使ってもよいが
.ok_or_else(|| Error)?; とするか
elseでreturnするか
どちらが見やすいかは意見が別れそうだ
158デフォルトの名無しさん
2023/03/11(土) 12:39:50.82ID:WrUJ3YdB Rustに限った話ではないがリファクタリングの良し悪しを判断するためには該当箇所を含む関数の全容(特に関数シグニチャ)とその関数を呼び出すコード例が最低限必要
関数シグニチャも呼び出すコードもない例では話にならない
呼び出し側が絶対変更できない前提なら前者だけでもいい場合があるが往々にして部分最適になりがち
>>130の例でも呼び出す側を考慮するとまた違った選択肢が見えてくる
関数シグニチャも呼び出すコードもない例では話にならない
呼び出し側が絶対変更できない前提なら前者だけでもいい場合があるが往々にして部分最適になりがち
>>130の例でも呼び出す側を考慮するとまた違った選択肢が見えてくる
159デフォルトの名無しさん
2023/03/11(土) 12:48:32.01ID:Us0DtIzW コーディング規約で早期リターンが推奨される開発現場であれば
その規約に準拠した表現が書きやすくなったのは良いこと
つうかそのつもりで読んでたから後者のほうが読みやすかったわ
その規約に準拠した表現が書きやすくなったのは良いこと
つうかそのつもりで読んでたから後者のほうが読みやすかったわ
160デフォルトの名無しさん
2023/03/11(土) 13:41:29.57ID:+LV0PjS3161デフォルトの名無しさん
2023/03/11(土) 14:09:20.55ID:zozTFx1B 隔離スレでやれ
162デフォルトの名無しさん
2023/03/11(土) 20:53:29.08ID:YsMYadXT https://qiita.com/namn1125/items/ccedf9cc06b8cef71557#let-else文のユースケース
この人が書いてるように?演算子のイディオムを踏襲してればlet-elseの出番は多くはない
逆に本来使うべきでないところでも乱用されやすいから注意が必要
この人が書いてるように?演算子のイディオムを踏襲してればlet-elseの出番は多くはない
逆に本来使うべきでないところでも乱用されやすいから注意が必要
163デフォルトの名無しさん
2023/03/11(土) 23:05:55.56ID:ChsfUoNW >>159
多くのところで言語に関わらずでifネストを深くせずに早期離脱をすることが好まれる
Rustではif let時にそれができなかったためlet else導入まではこうなってしまっていた
let foo = if let Some(foo) {
foo
} else {
(早期離脱前の処理があればここ)
早期離脱
}
これはfooが三重に冗長で不格好
そのためlet else以前は早期離脱をあきらめる本末転倒なことも起きていた
具体的にlet elseが適している早期離脱は「範囲」が広い
・break
・continue
・エラー以外のreturn
・早期離脱前の処理があるエラーreturn
>>162
?が使える「範囲」はlet else より狭く早期離脱前の処理がないエラーreturnのみ
もちろん「量」は多いけどね
多くのところで言語に関わらずでifネストを深くせずに早期離脱をすることが好まれる
Rustではif let時にそれができなかったためlet else導入まではこうなってしまっていた
let foo = if let Some(foo) {
foo
} else {
(早期離脱前の処理があればここ)
早期離脱
}
これはfooが三重に冗長で不格好
そのためlet else以前は早期離脱をあきらめる本末転倒なことも起きていた
具体的にlet elseが適している早期離脱は「範囲」が広い
・break
・continue
・エラー以外のreturn
・早期離脱前の処理があるエラーreturn
>>162
?が使える「範囲」はlet else より狭く早期離脱前の処理がないエラーreturnのみ
もちろん「量」は多いけどね
164デフォルトの名無しさん
2023/03/12(日) 11:57:58.73ID:HouQiurI カルパッチョ
165デフォルトの名無しさん
2023/03/12(日) 12:41:14.42ID:UHnNkdpy 初見
VS code使い始めたんだが、カーソル移動系のショートカットキーの編集ってできないのか?
さくらEditorみたいにカーソル移動・ドラッグ編集を全部キーボードでやりたいんだが
VS code使い始めたんだが、カーソル移動系のショートカットキーの編集ってできないのか?
さくらEditorみたいにカーソル移動・ドラッグ編集を全部キーボードでやりたいんだが
166デフォルトの名無しさん
2023/03/12(日) 12:42:40.81ID:C0R72d/J なぜここできく
167デフォルトの名無しさん
2023/03/12(日) 14:07:53.88ID:BVlbavKU File > Preferences > Keyboard Shortcutsで設定画面開いて
cursorでフィルターかければcursorLeftみたいなコマンド出てくるから大体は変更できると思う
知らんけど
cursorでフィルターかければcursorLeftみたいなコマンド出てくるから大体は変更できると思う
知らんけど
168デフォルトの名無しさん
2023/03/12(日) 14:14:14.53ID:C6Uwumzj vimでもemacsでもrust-analyzer動くよ
169デフォルトの名無しさん
2023/03/12(日) 15:10:27.15ID:UHnNkdpy >>166
プログラム板で一番勢いあるのここだから
プログラム板で一番勢いあるのここだから
170デフォルトの名無しさん
2023/03/12(日) 16:06:30.84ID:nONlRGBh 大学生が書いたQiita記事のほうがこのスレの住民より要点おさえてるじゃんw
おまえらも見習えよ
おまえらも見習えよ
171デフォルトの名無しさん
2023/03/13(月) 11:54:44.62ID:38Ewlrdq Qiitaは秀才だらけだし
5chム板は文字通り住民がrustだし
5chム板は文字通り住民がrustだし
172デフォルトの名無しさん
2023/03/16(木) 07:24:49.76ID:M0AuqK/y173デフォルトの名無しさん
2023/03/16(木) 10:05:31.80ID:3ZknUEKY174デフォルトの名無しさん
2023/03/16(木) 10:12:16.89ID:xtobTOZe 具体的に何が問題なの?
175デフォルトの名無しさん
2023/03/16(木) 18:23:03.08ID:O0F78LdH176デフォルトの名無しさん
2023/03/16(木) 18:54:09.77ID:sXsK9Uns オジおじ言ってたら自演
スレ荒らしが目的
スレ荒らしが目的
177デフォルトの名無しさん
2023/03/17(金) 18:16:56.57ID:XLm6gsUd こういうコードを書くとエラーになります。
Bar を実装しているのは &T であって T ではないからだというのはわかるのですが、
どういう形で書けばいいのかわかりません。
T そのものではなく &T が Bar を実装しているという制約はどう表現すればよいのでしょうか?
trait Bar {
fn func(&self) {}
}
fn baz<T>(x: &T)
where
T: Bar, // どう書けばいいの?
{
let a = x.func();
}
struct Foo {}
impl Bar for &Foo {}
fn main() {
baz(&Foo {});
}
Bar を実装しているのは &T であって T ではないからだというのはわかるのですが、
どういう形で書けばいいのかわかりません。
T そのものではなく &T が Bar を実装しているという制約はどう表現すればよいのでしょうか?
trait Bar {
fn func(&self) {}
}
fn baz<T>(x: &T)
where
T: Bar, // どう書けばいいの?
{
let a = x.func();
}
struct Foo {}
impl Bar for &Foo {}
fn main() {
baz(&Foo {});
}
178デフォルトの名無しさん
2023/03/17(金) 19:14:05.96ID:NC4w42Nt179デフォルトの名無しさん
2023/03/17(金) 19:33:27.88ID:7IpB+MOB180デフォルトの名無しさん
2023/03/17(金) 19:35:54.06ID:NC4w42Nt どうしてもimpl Bar for &Foo {}で行きたいなら
こうするしかない
trait Bar: Sized {
fn func(self) {}
}
fn baz<T>(x: T) where T: Bar,
こうするしかない
trait Bar: Sized {
fn func(self) {}
}
fn baz<T>(x: T) where T: Bar,
181デフォルトの名無しさん
2023/03/17(金) 19:56:30.88ID:TZnQdWAf いやできるが……
fn baz<'a, T>(x: &'a T) where &'a T: Bar
fn baz<'a, T>(x: &'a T) where &'a T: Bar
182デフォルトの名無しさん
2023/03/17(金) 19:59:29.44ID:XLm6gsUd なるほど、寿命を省略できないのですね。
ありがとうございます。
ありがとうございます。
183デフォルトの名無しさん
2023/03/17(金) 20:06:51.73ID:kImSYq8C184デフォルトの名無しさん
2023/03/17(金) 20:28:03.09ID:VjFaSUfW 寿命!
185デフォルトの名無しさん
2023/03/17(金) 21:08:25.10ID:XLm6gsUd186デフォルトの名無しさん
2023/03/18(土) 11:19:09.17ID:KAD/gYE9187デフォルトの名無しさん
2023/03/18(土) 11:40:54.04ID:yS+7OZFn188デフォルトの名無しさん
2023/03/18(土) 11:42:47.58ID:l9YNpI31 lifetime 周りは書いてあるだろ
189デフォルトの名無しさん
2023/03/18(土) 11:53:17.34ID:VtoeVuok190デフォルトの名無しさん
2023/03/18(土) 11:57:09.36ID:kHUlERx3 >>185
ライフタイムは全てにあるが省略できることが多い
省略できないときはコンパイラがエラーとし教えてくれるのでライフタイムを付ければいい
>>186
日本語版もある
https://doc.rust-jp.rs/book-ja/
ライフタイムは全てにあるが省略できることが多い
省略できないときはコンパイラがエラーとし教えてくれるのでライフタイムを付ければいい
>>186
日本語版もある
https://doc.rust-jp.rs/book-ja/
191デフォルトの名無しさん
2023/03/18(土) 14:05:24.60ID:PyzwqGcC192デフォルトの名無しさん
2023/03/18(土) 16:08:20.29ID:QSo2KHpO 「非公式な日本語訳」を「日本語版」と呼称するのはそれがあたかも公式かのように錯覚させる意図が見えるので優良誤認の疑いがある
193デフォルトの名無しさん
2023/03/18(土) 16:13:56.89ID:6WtXixvi194デフォルトの名無しさん
2023/03/18(土) 17:11:12.32ID:NQWJ1KgL 日本語訳の話題は生産的じゃないのでやめよう
このスレのローカルルールは>>37の通り
このスレのローカルルールは>>37の通り
195177
2023/03/18(土) 18:27:39.58ID:XgD5JQEe 読んだのは日本語訳のほうの The book ですが、個々の機能はたぶん分かってると思います。
ライフタイムを省略した場合には一定のルールで補われることも知ってました。
ただ、型が満たすべき性質を書くのが where 句なので (エラーメッセージを見てすら!) ライフタイムが必要ということがぴんと来なかったというのと、
引数と同じ記法でライフタイムをここに書けるのだということがわからなかったんです。
ライフタイムを省略した場合には一定のルールで補われることも知ってました。
ただ、型が満たすべき性質を書くのが where 句なので (エラーメッセージを見てすら!) ライフタイムが必要ということがぴんと来なかったというのと、
引数と同じ記法でライフタイムをここに書けるのだということがわからなかったんです。
196デフォルトの名無しさん
2023/03/18(土) 18:38:31.92ID:l9YNpI31 > 引数と同じ記法でライフタイムをここに書けるのだということがわからなかったんです。
英語版でも日本語版でもどっちでもいいけど 10.3 にちゃんと書いてあるよ
英語版でも日本語版でもどっちでもいいけど 10.3 にちゃんと書いてあるよ
197デフォルトの名無しさん
2023/03/18(土) 19:09:39.09ID:YhY+O2tk whereの:の左辺に参照とか書けるのをまず知らなかったんでしょ
the Bookにそんな例無いし
the Bookにそんな例無いし
198デフォルトの名無しさん
2023/03/18(土) 19:27:58.81ID:sUMBdqo8 日本語版を読まなければこんなことにはならなかった
日本語版を許すな
日本語版を許すな
199デフォルトの名無しさん
2023/03/19(日) 04:14:30.76ID:JYAaHQUF >>183
ラストコンパイラって響きカッコいいな
ラストコンパイラって響きカッコいいな
200デフォルトの名無しさん
2023/03/19(日) 13:06:57.80ID:j6t6IVCD201デフォルトの名無しさん
2023/03/19(日) 13:09:44.94ID:E3Ip09fl そりゃ「個々の機能はたぶん分かってると思います」とか言われたら分かってねーじゃんって言いたくなるだろ
202デフォルトの名無しさん
2023/03/19(日) 13:23:44.49ID:6gmOWdI+ >>196
where 句の制約で書いてる事例はないよ。
where 句の制約で書いてる事例はないよ。
203デフォルトの名無しさん
2023/03/19(日) 14:19:01.09ID:8hEI7b0p204デフォルトの名無しさん
2023/03/19(日) 14:25:09.74ID:RMEG+oCh205デフォルトの名無しさん
2023/03/19(日) 20:29:29.27ID:Pq7wYRkP >>203
順調に日本Rustは錆びているようですね。いや、めでたい。
順調に日本Rustは錆びているようですね。いや、めでたい。
206デフォルトの名無しさん
2023/03/19(日) 20:49:16.05ID:UVlxeYfB207デフォルトの名無しさん
2023/03/19(日) 21:36:02.67ID:XN9u9qop Rustはベンチマーク速いから気になってるんだけど
iPhoneやAndroidの開発で将来的に使えるようになる話はないの?
iPhoneやAndroidの開発で将来的に使えるようになる話はないの?
208デフォルトの名無しさん
2023/03/19(日) 21:40:34.06ID:C8hzWYTf ゴミだな
209デフォルトの名無しさん
2023/03/19(日) 21:41:36.36ID:/nL/Z/hW >>207
普通に使えるやろ
普通に使えるやろ
210デフォルトの名無しさん
2023/03/19(日) 21:48:03.22ID:1LqNQBrB211デフォルトの名無しさん
2023/03/19(日) 22:05:41.03ID:pmaEpt3C212デフォルトの名無しさん
2023/03/19(日) 22:08:47.66ID:pmaEpt3C 5chでの偏差値ね
Stackoverflowだと47くらい
Stackoverflowだと47くらい
213デフォルトの名無しさん
2023/03/19(日) 22:25:46.74ID:6gmOWdI+ >>207
ネイティブコンポーネントには Rust は使える。
Android の根本設計が Linux+JVM で、 JVM は変に高級な設計だからその高級な機能に噛み合うように設計された言語じゃないとうまくいかない。
LLVM バックエンドで JVM バイトコードを生成するものもあるらしいから無理すりゃ Rust でもなんとかなるかもしれないけど……
それよりも現在の情勢を見ると Android に WASM サブシステムが入るとかのほうがあり得そうな気がするよ。
ネイティブコンポーネントには Rust は使える。
Android の根本設計が Linux+JVM で、 JVM は変に高級な設計だからその高級な機能に噛み合うように設計された言語じゃないとうまくいかない。
LLVM バックエンドで JVM バイトコードを生成するものもあるらしいから無理すりゃ Rust でもなんとかなるかもしれないけど……
それよりも現在の情勢を見ると Android に WASM サブシステムが入るとかのほうがあり得そうな気がするよ。
214デフォルトの名無しさん
2023/03/20(月) 00:55:07.77ID:rG0fuScP 自然言語自体に落ち度があると思った方がプログラミング言語の価値が分かりやすい
翻訳にも質問にもChatGPTにも過度の期待をしなくてすむ
翻訳にも質問にもChatGPTにも過度の期待をしなくてすむ
215デフォルトの名無しさん
2023/03/20(月) 01:31:12.77ID:OPxEUMsA 言語の問題と言語を扱うやつの問題を同一視するアホ
216デフォルトの名無しさん
2023/03/20(月) 01:42:28.65ID:+AEvN8jR 正常動作する正規品を期待してたのに
不具合だらけで役に立たないジャンク品でした
不具合だらけで役に立たないジャンク品でした
217デフォルトの名無しさん
2023/03/20(月) 02:15:13.67ID:rG0fuScP はした金ではジャンク品しか買えない
インフレか
物価の問題と品質の問題のような二つの問題を無関係と考えるのがアホだったんじゃないか?
インフレか
物価の問題と品質の問題のような二つの問題を無関係と考えるのがアホだったんじゃないか?
218デフォルトの名無しさん
2023/03/20(月) 03:09:08.81ID:KC0EWXje prettierの代替のdprintがRust製だった
普及してるものがRust製に置き換わるってが今後も続くだろうね
普及してるものがRust製に置き換わるってが今後も続くだろうね
219デフォルトの名無しさん
2023/03/20(月) 03:46:46.02ID:8+GC48xI >>217
ところが実際はジャンク品のほうが正規品より高いんだなこれが
正規品に見せかけて売ってるからいわゆるジャンク扱いではなく蓋を開けたらゴミでしたという落ち
でもありがたいことに今は購入前に中身を確認可能なのでよほどの情弱じゃなければ騙されないんだけどね
ところが実際はジャンク品のほうが正規品より高いんだなこれが
正規品に見せかけて売ってるからいわゆるジャンク扱いではなく蓋を開けたらゴミでしたという落ち
でもありがたいことに今は購入前に中身を確認可能なのでよほどの情弱じゃなければ騙されないんだけどね
220デフォルトの名無しさん
2023/03/20(月) 10:04:17.69ID:UnL767mB221デフォルトの名無しさん
2023/03/20(月) 10:58:26.51ID:uuArbTr3 このあたりを読んでおけば大丈夫
Advanced Lifetimes
https://doc.rust-lang.org/1.30.0/book/second-edition/ch19-02-advanced-lifetimes.html
Advanced Lifetimes
https://doc.rust-lang.org/1.30.0/book/second-edition/ch19-02-advanced-lifetimes.html
222デフォルトの名無しさん
2023/03/20(月) 11:08:21.33ID:XflJK2ct >JVM は変に高級な設計だからその高級な機能に噛み合うように設計された言語じゃないとうまくいかない。
相変わらずいい加減なこと書いてるなぁ
相変わらずいい加減なこと書いてるなぁ
223デフォルトの名無しさん
2023/03/20(月) 11:41:00.74ID:rG0fuScP アプリもコンパイラも動くLinuxが正規品
コンパイラは不要とされアプリしか動かないLinuxがジャンク
コンパイラは不要とされアプリしか動かないLinuxがジャンク
224デフォルトの名無しさん
2023/03/20(月) 11:59:59.11ID:IoVEULD8 >>223
GNUにケンカ売る気かよ
GNUにケンカ売る気かよ
225デフォルトの名無しさん
2023/03/20(月) 14:23:43.87ID:YI144KAX Iterator<Item = Option>の時
filter(|o| o.is_some()).map(|o| o.unwrap()).map(|x| f(x))を
iflet(|Some(x)| f(x))みたいに1つにまとめてくれるメソッドある?
filter(|o| o.is_some()).map(|o| o.unwrap()).map(|x| f(x))を
iflet(|Some(x)| f(x))みたいに1つにまとめてくれるメソッドある?
226デフォルトの名無しさん
2023/03/20(月) 17:14:18.78ID:dpT4FG92 flattenとかflat_mapとかfilter_mapとか
227デフォルトの名無しさん
2023/03/20(月) 19:58:13.92ID:EBVsuSrE flat_mapはmap(f).flatten()の順だから無理だな
filter_mapはOption外しに使えるがmap(f)は別途必要
filter_map(|opt| opt).map(f) または参照なら
filter_map(Option::as_ref).map(f)
したがって正解はこれ
flatten().map(f)
filter_mapはOption外しに使えるがmap(f)は別途必要
filter_map(|opt| opt).map(f) または参照なら
filter_map(Option::as_ref).map(f)
したがって正解はこれ
flatten().map(f)
228デフォルトの名無しさん
2023/03/20(月) 20:22:03.14ID:9WmeSXDj flattenのOption/Resultはずし知らんかった
229デフォルトの名無しさん
2023/03/20(月) 20:32:22.28ID:45aFG7he230デフォルトの名無しさん
2023/03/20(月) 20:46:14.12ID:YI144KAX flattenを使ってできました
let v = vec![None, Some((1, 2)), None, Some((3, 4)), None];
assert_eq!(14, v.iter().flatten().map(|(a, b)| a * b).sum());
>>229
filter_mapを使うと簡単ならば知りたいです
let v = vec![None, Some((1, 2)), None, Some((3, 4)), None];
assert_eq!(14, v.iter().flatten().map(|(a, b)| a * b).sum());
>>229
filter_mapを使うと簡単ならば知りたいです
231デフォルトの名無しさん
2023/03/20(月) 21:35:03.62ID:adpwtvX/ 複オジかよっw
232デフォルトの名無しさん
2023/03/20(月) 21:41:30.44ID:EBVsuSrE 前述したようにfilter_map自体のmapではOption外ししかできないので別途map(f)が必要になる
filter_map(|opt| opt).map(f)
あるいは
filter_map(|opt| opt.map(f))
簡単なのはflatten().map(f)
filter_map(|opt| opt).map(f)
あるいは
filter_map(|opt| opt.map(f))
簡単なのはflatten().map(f)
233デフォルトの名無しさん
2023/03/20(月) 23:15:03.64ID:dBJpnlWY flat_mapはfilter_mapを汎用化したものなので
filter_mapは常にflat_mapで書き直せる
flattenと理屈は同じ
filter_mapは常にflat_mapで書き直せる
flattenと理屈は同じ
234デフォルトの名無しさん
2023/03/20(月) 23:20:21.79ID:I3aedYRP 唐突に妙に具体的な質問が飛んできたらあの人だと思ってればいい
235デフォルトの名無しさん
2023/03/20(月) 23:20:56.30ID:c1bWUyRU どの人だよ
236デフォルトの名無しさん
2023/03/20(月) 23:49:46.77ID:K17OWm6q237デフォルトの名無しさん
2023/03/21(火) 00:12:49.49ID:lhwbZ9up238デフォルトの名無しさん
2023/03/21(火) 10:42:06.27ID:El4m1VCp Someだけ拾って関数をmapすると考えれば
filter_map(|opt| opt.map(f))
だな
元のSome/Noneをそのまま利用するのがトリッキーかもしれないけど
filter_map(|opt| opt.map(f))
だな
元のSome/Noneをそのまま利用するのがトリッキーかもしれないけど
239デフォルトの名無しさん
2023/03/21(火) 11:33:54.48ID:aqrydfrP ところで、ラムダには自由変数というものがありその反対が束縛変数だが
ラムダや自由変数を意識する必要がない文脈で束縛という用語が出ると
その語源を説明する手間がかかるよな
ラムダや自由変数を意識する必要がない文脈で束縛という用語が出ると
その語源を説明する手間がかかるよな
240デフォルトの名無しさん
2023/03/21(火) 13:02:51.29ID:3dx+Qi3k scalaやっているせいかmatchとか
すごく使いやすいわん
iterator nextなんてJavaでも使わんけど
これ使い人いるの?
すごく使いやすいわん
iterator nextなんてJavaでも使わんけど
これ使い人いるの?
241デフォルトの名無しさん
2023/03/21(火) 13:17:10.53ID:lhwbZ9up■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【文春】永野芽郁(25)&田中圭(40)燃え上がる不倫LINE ★21 [Ailuropoda melanoleuca★]
- 永野芽郁「一部報道にあるやり取りはしていない」所属事務所が「本人に確認」改めて「交際等の事実はない」★6 [muffin★]
- 【米】スーパーのコメ価格、4233円 17週連続値上がり 前年同期比で2145円高く ★2 [ぐれ★]
- 【陰謀論】「ファクトチェック後進国」日本に変化の兆し 兵庫県知事選きっかけに全国の新聞社が始めた試み [ぐれ★]
- 【文春】田中圭と永野芽郁やりとりに「スクショはないの?」「信憑性が…」証拠となるはずのLINE画像が公開されない理由とは [muffin★]
- 【野球】巨人・岡本和真、重傷だった…再度診察を受け「左肘の靱帯損傷」 全治3か月 [ニーニーφ★]