プログラミング言語 Rust 4【ワッチョイ】 (302レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
92(2): デフォルトの名無しさん (ワッチョイ bdb3-kj1m) [sage] 2018/03/18(日)23:09 ID:UNqGf23T0(1)
does not live longエラー関係は自分が思ってるより広い視点で見た方が解決するんじゃないかなあ
Hito.konomi_no_mochiは参照なんだから、参照元としてVec<Mochi<'a>>を保持しないと駄目なんじゃね?
=>mochiがMapになってて分かりにくい
=>とりあえずcollectさせてVec<Mochi>持ったら動いた
みたいな。
https://play.rust-lang.org/?gist=6c9947e3584f1feb5bb14f07d27aa9c7&version=stable
多分、頭の良い人ならもっと綺麗な説明と解法があるんだろうけど
93(1): デフォルトの名無しさん (ワッチョイ 2bb3-yeMC) [sage] 2018/03/19(月)07:39 ID:bmK7HIBH0(1/2)
>>92
ありがとうございます
仮引数mのライフタイムはmain関数が抜けるまでだから通るということで合っていますか
またVecではなくIterator::Mapだと駄目な理由は、Iterator::Mapはcollectされるまでクロージャが実行されないから…とかでしょうか
94(1): デフォルトの名無しさん (ワッチョイ bdb3-kj1m) [sage] 2018/03/19(月)13:44 ID:aUxUFBJe0(1/2)
>>93
仮引数mのライフタイムはクロージャ内なのは変わらないよ。>>92は仮引数を参照じゃなく消費してるから通る(>>92の&mじゃなくてmで良い)
クロージャが実行されないから、ではなく、mochiの値が消費されてるのにその参照を持たせようとしてるから駄目
試しに>>91のコードでmochi.map(|m| { 0 })とか書いて、mochiをprintln!に渡してみようとすると怒られるよ。もう使ってるって。
そこらへんの細かいルールを覚えるの大変だし、コンパイラもまだ分かりやすいエラーメッセージ吐いてくれないから、
・参照を使うときは、参照元をちゃんと生かしておくこと
・参照を使った構造体は、元の値を修飾(見方を変える、新しい機能を持たせる等)するようなパターンに限定すること
を守るようにした方がいいよ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s