There is no implementation of From<{integer}> for Box<Box<{integer}>> so you can't do that automatically. Let's say I make the following implementations
impl From<i32> for Foo
impl From<Foo> for Box<Box<i32>>
How should Rust perforn the conversion? Via Box<i32> or via Foo. This ambiguity is why you can't do this.
It sounds like you're looking for a blanket implementation like:
impl<A: From<B>, B: From<C>> From<C> for A {
fn from(v: C) -> A {
A::from(B::from(v))
}
}
However, if this implementation were to exist, this would prevent A from implementing From<C> directly for all cases where there's already B: From<C> and A: From<B>. That may not always be what you want.