- 364 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 22:34:57.88 ID:NwYcCv97.net]
- では常に impl を使えばよいのかというと
以下のような条件によって異なるクロージャを返す時 ここで Box を使わず impl Fn(i32) -> i32 にしようとすると 2つのクロージャの型が違うとコンパイラに怒られます fn make_closure(curry: Option<i32>) -> Box<dyn Fn(i32) -> i32> { if let Some(curry) = curry { Box::new(move |x| x + curry) } else { Box::new(|x| x + 1) } } 結局クロージャでない場合と同じ話で 同じトレイトでも型が異なるものが同居する時にBox化します >>349のRust bookの例はBox化が不要なケースでBox化だから混乱しますね
|

|