I got rid of the Box because it was unnecessary, and the references to Arc<_>. Don't take references to Arc, just clone it and pass it along. If you are doing any work with Futures, it is unlikely that the cost of cloning an Arc is going to be a performance hit.
impl trait syntax is not the same as trait object, you tell the compiler: I will return a type, always the same, and it implements this trait. It's also a newish syntax maybe it wasn't available when the exemple was made. You can read more about it here in the book.
If you know all possible types, you can use an Enum. @HadrienG made a comparison between the two in this reply, there are also crates that make the enum for you but I don't know if they work when it's not a trait you made.