I’m confused about a static lifetime getting introduced and a surprising difference between boxed and ref’d trait objects that I’ve yet to find documentation about.

Playground: https://play.rust-lang.org/?gist=85a7c1189176459f8510d97ddbc7e2b7&version=stable

There’s a little bit of noise here so I can remember the connection to the original code, but otherwise this is minimal reproduction.

The surprising thing is that Case 2 does not work. I understand why Case 3 works even though Case 2 does not (because `Box<T>`

is sugar for `Box<T + 'static>`

), but I don’t understand why it seems to be the `impl B for A`

that is adding an implicit `&self + 'static`

.

Likely forehead slappingly obvious, but feeling rather dense at the moment.