[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 a few different ways to unblock me: check out the help messages
  [31m│[0m below!
  [31m│[0m You only need to follow *one* of them.
  [31m│[0m
  [31m│[0m   [36mhelp:[0m Allow me to clone `app::A` in order to satisfy the borrow checker.
  [31m│[0m         You can do so by invoking `.cloning(CloningStrategy::CloneIfNecessary)`
  [31m│[0m         on the type returned by `.constructor`.
  [31m│[0m        ☞
  [31m│[0m           ╭─[[36;1;4msrc/lib.rs[0m:51:1]
  [31m│[0m        [2m51[0m │     let mut bp = Blueprint::new();
  [31m│[0m        [2m52[0m │     bp.constructor(f!(crate::a), Lifecycle::RequestScoped);
  [31m│[0m           · [35;1m                   ──────┬─────[0m
  [31m│[0m           ·                          [35;1m╰── The constructor was registered here[0m
  [31m│[0m        [2m53[0m │     // Being a singleton, this will be an input type of the dependency closure for the request handler
  [31m│[0m           ╰────
  [31m│[0m   [36mhelp:[0m Considering changing the signature of `app::a`.
  [31m│[0m         It takes `app::A` by value. Would a shared reference, `&app::A`, be
  [31m│[0m         enough?
  [31m│[0m   [36mhelp:[0m If `app::A` itself cannot implement `Clone`, consider wrapping it in
  [31m│[0m         an `std::sync::Rc` or `std::sync::Arc`.

[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 a few different ways to unblock me: check out the help messages
  [31m│[0m below!
  [31m│[0m You only need to follow *one* of them.
  [31m│[0m
  [31m│[0m   [36mhelp:[0m Allow me to clone `app::B` in order to satisfy the borrow checker.
  [31m│[0m         You can do so by invoking `.cloning(CloningStrategy::CloneIfNecessary)`
  [31m│[0m         on the type returned by `.constructor`.
  [31m│[0m        ☞
  [31m│[0m           ╭─[[36;1;4msrc/lib.rs[0m:53:1]
  [31m│[0m        [2m53[0m │     // Being a singleton, this will be an input type of the dependency closure for the request handler
  [31m│[0m        [2m54[0m │     bp.constructor(f!(crate::b), Lifecycle::Singleton);
  [31m│[0m           · [35;1m                   ──────┬─────[0m
  [31m│[0m           ·                          [35;1m╰── The constructor was registered here[0m
  [31m│[0m        [2m55[0m │     bp.constructor(f!(crate::c), Lifecycle::RequestScoped);
  [31m│[0m           ╰────
  [31m│[0m   [36mhelp:[0m Considering changing the signature of `app::b`.
  [31m│[0m         It takes `app::B` by value. Would a shared reference, `&app::B`, be
  [31m│[0m         enough?