In Box<T>, T is always a type. dyn Traitis a type.
Yes.
Also, note that generic parameters can only be types, not traits. A trait is not something that you can instantiate and hold onto; it's merely a specification of what methods you can call on a value of an underlying, concrete type. So it's never Generic<Trait>, it's always Generic<Type>.
Traits are put as bounds on generic type parameters, they don't directly act as type parameters. So it's always where SomeParam: Trait and never where SomeParam: Type.