[31m[1mERROR[0m[39m: 
  [31m×[0m I can't generate code that will pass the borrow checker *and* match the
  [31m│[0m instructions in your blueprint.
  [31m│[0m `app::handler` consumes `app::A` by value, but `app::A` is a singleton and
  [31m│[0m can't be moved out of `ApplicationState`.
  [31m│[0m Cloning `app::A` would fix this, but its cloning strategy is set to
  [31m│[0m `NeverClone`.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:28:1]
  [31m│[0m  [2m28[0m │     bp.prebuilt(t!(crate::B));
  [31m│[0m  [2m29[0m │     bp.singleton(f!(crate::singleton));
  [31m│[0m     · [35;1m                 ──────────┬─────────[0m
  [31m│[0m     ·                            [35;1m╰── It was registered here[0m
  [31m│[0m  [2m30[0m │     bp.singleton(f!(crate::singleton2));
  [31m│[0m     ╰────
  [31m│[0m   [36mhelp:[0m Can `app::handler` take a reference to `app::A`, rather than consuming
  [31m│[0m         it by value?
  [31m│[0m [36m  help: [0mSet the cloning strategy for `app::A` to `CloneIfNecessary`.

[31m[1mERROR[0m[39m: 
  [31m×[0m I can't generate code that will pass the borrow checker *and* match the
  [31m│[0m instructions in your blueprint.
  [31m│[0m `app::handler` consumes `app::B` by value, but `app::B` is a singleton and
  [31m│[0m can't be moved out of `ApplicationState`.
  [31m│[0m Cloning `app::B` would fix this, but its cloning strategy is set to
  [31m│[0m `NeverClone`.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:27:1]
  [31m│[0m  [2m27[0m │     let mut bp = Blueprint::new();
  [31m│[0m  [2m28[0m │     bp.prebuilt(t!(crate::B));
  [31m│[0m     · [35;1m                ──────┬─────[0m
  [31m│[0m     ·                       [35;1m╰── It was registered here[0m
  [31m│[0m  [2m29[0m │     bp.singleton(f!(crate::singleton));
  [31m│[0m     ╰────
  [31m│[0m   [36mhelp:[0m Can `app::handler` take a reference to `app::B`, rather than consuming
  [31m│[0m         it by value?
  [31m│[0m [36m  help: [0mSet the cloning strategy for `app::B` to `CloneIfNecessary`.

[31m[1mERROR[0m[39m: 
  [31m×[0m I can't generate code that will pass the borrow checker *and* match the
  [31m│[0m instructions in your blueprint.
  [31m│[0m `app::handler` consumes `app::C` by value, but `app::C` is a singleton and
  [31m│[0m can't be moved out of `ApplicationState`.
  [31m│[0m Cloning `app::C` would fix this, but its cloning strategy is set to
  [31m│[0m `NeverClone`.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:29:1]
  [31m│[0m  [2m29[0m │     bp.singleton(f!(crate::singleton));
  [31m│[0m  [2m30[0m │     bp.singleton(f!(crate::singleton2));
  [31m│[0m     · [35;1m                 ──────────┬──────────[0m
  [31m│[0m     ·                            [35;1m╰── It was registered here[0m
  [31m│[0m  [2m31[0m │     bp.route(GET, "/", f!(crate::handler));
  [31m│[0m     ╰────
  [31m│[0m   [36mhelp:[0m Can `app::handler` take a reference to `app::C`, rather than consuming
  [31m│[0m         it by value?
  [31m│[0m [36m  help: [0mSet the cloning strategy for `app::C` to `CloneIfNecessary`.

[31m[1mERROR[0m[39m: 
  [31m×[0m I can't generate code that will pass the borrow checker *and* match the
  [31m│[0m instructions in your blueprint.
  [31m│[0m There are 2 components that take `app::B` as an input parameter, consuming
  [31m│[0m it by value:
  [31m│[0m - `crate::ApplicationState`
  [31m│[0m - `app::singleton2`, a constructor
  [31m│[0m Since I'm not allowed to clone `app::B`, I can't resolve this conflict.
  [31m│[0m 
  [31m│[0m
  [31m│[0m   [36mhelp:[0m Considering changing the signature of the components that consume
  [31m│[0m         `app::B` by value.
  [31m│[0m         Would a shared reference, `&app::B`, be enough?
  [31m│[0m        ☞
  [31m│[0m           ╭─[[36;1;4msrc/lib.rs[0m:29:1]
  [31m│[0m        [2m29[0m │     bp.singleton(f!(crate::singleton));
  [31m│[0m        [2m30[0m │     bp.singleton(f!(crate::singleton2));
  [31m│[0m           · [35;1m                 ──────────┬──────────[0m
  [31m│[0m           ·                            [35;1m╰── One of the consuming constructors[0m
  [31m│[0m        [2m31[0m │     bp.route(GET, "/", f!(crate::handler));
  [31m│[0m           ╰────