How could routerify do init_default_404_route?

The Route<B, E> has two generic types, how could routerify be able to add a specialized typed handler?

When I try to do similar thing in routerify-lite, the compiler would give the below error:

type mismatch resolving `<impl futures::Future as futures::Future>::Output == std::result::Result<Response<B>, E>`
expected enum `std::result::Result<Response<Body>, _>`
   found enum `std::result::Result<Response<B>, E>`

Why???