[31m[1mERROR[0m[39m: 
  [31m×[0m I am not smart enough to figure out the concrete type for all the generic
  [31m│[0m parameters in `app::generic_wrapping_middleware`.
  [31m│[0m There should no unassigned generic parameters in wrapping middlewares
  [31m│[0m apart from the one in `Next<_>`, but `T` does not seem to have been
  [31m│[0m assigned a concrete type.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:45:1]
  [31m│[0m  [2m45[0m │     let mut bp = Blueprint::new();
  [31m│[0m  [2m46[0m │     bp.wrap(f!(crate::generic_wrapping_middleware));
  [31m│[0m     · [35;1m            ───────────────────┬──────────────────[0m
  [31m│[0m     ·                [35;1mThe wrapping middleware was registered here[0m
  [31m│[0m  [2m47[0m │     bp.wrap(f!(crate::doubly_generic_wrapping_middleware));
  [31m│[0m     ╰────
  [31m│[0m    ╭─[[36;1;4msrc/lib.rs[0m:1:1]
  [31m│[0m  [2m1[0m │ pub fn generic_wrapping_middleware<A, T>(_next: Next<A>, generic_input: GenericType<T>) -> u8
  [31m│[0m    · [35;1m                                      ┬[0m
  [31m│[0m    ·                                       [35;1m╰── The generic parameter without a concrete type[0m
  [31m│[0m  [2m2[0m │ where
  [31m│[0m    ╰────
  [31m│[0m [36m  help: [0mSpecify the concrete type for `T` when registering the wrapping
  [31m│[0m         middleware against the blueprint:
  [31m│[0m         |  bp.wrap(
  [31m│[0m         |    f!(my_crate::my_middleware::<ConcreteType>),
  [31m│[0m         |  )

[31m[1mERROR[0m[39m: 
  [31m×[0m I am not smart enough to figure out the concrete type for all the generic
  [31m│[0m parameters in `app::doubly_generic_wrapping_middleware`.
  [31m│[0m There should no unassigned generic parameters in wrapping middlewares
  [31m│[0m apart from the one in `Next<_>`, but `T` and `S` do not seem to have been
  [31m│[0m assigned a concrete type.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:46:1]
  [31m│[0m  [2m46[0m │     bp.wrap(f!(crate::generic_wrapping_middleware));
  [31m│[0m  [2m47[0m │     bp.wrap(f!(crate::doubly_generic_wrapping_middleware));
  [31m│[0m     · [35;1m            ──────────────────────┬──────────────────────[0m
  [31m│[0m     ·                [35;1mThe wrapping middleware was registered here[0m
  [31m│[0m  [2m48[0m │     bp.wrap(f!(crate::triply_generic_wrapping_middleware));
  [31m│[0m     ╰────
  [31m│[0m    ╭─[[36;1;4msrc/lib.rs[0m:1:1]
  [31m│[0m  [2m1[0m │ pub fn doubly_generic_wrapping_middleware<A, T, S>(
  [31m│[0m    · [35;1m                                             ┬[0m[33;1m  ┬[0m
  [31m│[0m    ·                                              [35;1m│[0m[33;1mThe generic parameter without[0m
  [31m│[0m    ·                                              [35;1m│[0m       [33;1ma concrete type[0m
  [31m│[0m    ·                [35;1mThe generic parameter without a concrete type[0m
  [31m│[0m  [2m2[0m │     _next: Next<A>,
  [31m│[0m    ╰────
  [31m│[0m [36m  help: [0mSpecify the concrete types for `T` and `S` when registering the
  [31m│[0m         wrapping middleware against the blueprint:
  [31m│[0m         |  bp.wrap(
  [31m│[0m         |    f!(my_crate::my_middleware::<ConcreteType>),
  [31m│[0m         |  )

[31m[1mERROR[0m[39m: 
  [31m×[0m I am not smart enough to figure out the concrete type for all the generic
  [31m│[0m parameters in `app::triply_generic_wrapping_middleware`.
  [31m│[0m There should no unassigned generic parameters in wrapping middlewares
  [31m│[0m apart from the one in `Next<_>`, but `T`, `S` and `U` do not seem to have
  [31m│[0m been assigned a concrete type.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:47:1]
  [31m│[0m  [2m47[0m │     bp.wrap(f!(crate::doubly_generic_wrapping_middleware));
  [31m│[0m  [2m48[0m │     bp.wrap(f!(crate::triply_generic_wrapping_middleware));
  [31m│[0m     · [35;1m            ──────────────────────┬──────────────────────[0m
  [31m│[0m     ·                [35;1mThe wrapping middleware was registered here[0m
  [31m│[0m  [2m49[0m │     bp.route(GET, "/home", f!(crate::handler));
  [31m│[0m     ╰────
  [31m│[0m    ╭─[[36;1;4msrc/lib.rs[0m:1:1]
  [31m│[0m  [2m1[0m │ pub fn triply_generic_wrapping_middleware<A, T, S, U>(
  [31m│[0m    · [35;1m                                             ┬[0m[33;1m  ┬[0m[32;1m  ┬[0m
  [31m│[0m    ·                                              [35;1m│[0m  [33;1m│[0m   [32;1mThe generic parameter[0m
  [31m│[0m    ·                                              [35;1m│[0m  [33;1m│[0m  [32;1mwithout a concrete type[0m
  [31m│[0m    ·                                              [35;1m│[0m[33;1mThe generic parameter without[0m
  [31m│[0m    ·                                              [35;1m│[0m       [33;1ma concrete type[0m
  [31m│[0m    ·                [35;1mThe generic parameter without a concrete type[0m
  [31m│[0m  [2m2[0m │     _next: Next<A>,
  [31m│[0m    ╰────
  [31m│[0m [36m  help: [0mSpecify the concrete types for `T`, `S` and `U` when registering the
  [31m│[0m         wrapping middleware against the blueprint:
  [31m│[0m         |  bp.wrap(
  [31m│[0m         |    f!(my_crate::my_middleware::<ConcreteType>),
  [31m│[0m         |  )