[31m[1mERROR[0m[39m: 
  [31m×[0m You can't inject a mutable reference as an input parameter to
  [31m│[0m `app::observer`.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:33:1]
  [31m│[0m  [2m33[0m │     bp.wrap(f!(crate::wrapping));
  [31m│[0m  [2m34[0m │     bp.error_observer(f!(crate::observer));
  [31m│[0m     · [35;1m                      ─────────┬─────────[0m
  [31m│[0m     ·                                [35;1m╰── The error observer was registered here[0m
  [31m│[0m  [2m35[0m │     bp.route(GET, "/home", f!(crate::handler))
  [31m│[0m     ╰────
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:21:1]
  [31m│[0m  [2m21[0m │ 
  [31m│[0m  [2m22[0m │ pub fn observer(e: &pavex::Error, s: &mut String) {
  [31m│[0m     · [35;1m                                  ───────┬──────[0m
  [31m│[0m     ·                                          [35;1m╰── The &mut input[0m
  [31m│[0m  [2m23[0m │     todo!()
  [31m│[0m     ╰────
  [31m│[0m [36m  help: [0mInjected inputs can only be taken by value or via a shared reference
  [31m│[0m         (`&`). If you absolutely need to mutate the input, consider internal
  [31m│[0m         mutability (e.g. `RefCell`).

[31m[1mERROR[0m[39m: 
  [31m×[0m You can't inject a mutable reference as an input parameter to
  [31m│[0m `app::constructor`.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:31:1]
  [31m│[0m  [2m31[0m │     let mut bp = Blueprint::new();
  [31m│[0m  [2m32[0m │     bp.constructor(f!(crate::constructor), Lifecycle::RequestScoped);
  [31m│[0m     · [35;1m                   ───────────┬──────────[0m
  [31m│[0m     ·                               [35;1m╰── The constructor was registered here[0m
  [31m│[0m  [2m33[0m │     bp.wrap(f!(crate::wrapping));
  [31m│[0m     ╰────
  [31m│[0m    ╭─[[36;1;4msrc/lib.rs[0m:6:1]
  [31m│[0m  [2m6[0m │ 
  [31m│[0m  [2m7[0m │ pub fn constructor(r: &mut RequestHead) -> String {
  [31m│[0m    · [35;1m                   ─────────┬─────────[0m
  [31m│[0m    ·                             [35;1m╰── The &mut input[0m
  [31m│[0m  [2m8[0m │     todo!()
  [31m│[0m    ╰────
  [31m│[0m [36m  help: [0mInjected inputs can only be taken by value or via a shared reference
  [31m│[0m         (`&`). If you absolutely need to mutate the input, consider internal
  [31m│[0m         mutability (e.g. `RefCell`).

[31m[1mERROR[0m[39m: 
  [31m×[0m You can't inject a mutable reference as an input parameter to
  [31m│[0m `app::wrapping`.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:32:1]
  [31m│[0m  [2m32[0m │     bp.constructor(f!(crate::constructor), Lifecycle::RequestScoped);
  [31m│[0m  [2m33[0m │     bp.wrap(f!(crate::wrapping));
  [31m│[0m     · [35;1m            ─────────┬─────────[0m
  [31m│[0m     ·                      [35;1m╰── The wrapping middleware was registered here[0m
  [31m│[0m  [2m34[0m │     bp.error_observer(f!(crate::observer));
  [31m│[0m     ╰────
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:14:1]
  [31m│[0m  [2m14[0m │ 
  [31m│[0m  [2m15[0m │ pub fn wrapping<C>(next: Next<C>, s: &mut String) -> Response
  [31m│[0m     · [35;1m                                  ───────┬──────[0m
  [31m│[0m     ·                                          [35;1m╰── The &mut input[0m
  [31m│[0m  [2m16[0m │ where
  [31m│[0m     ╰────
  [31m│[0m [36m  help: [0mInjected inputs can only be taken by value or via a shared reference
  [31m│[0m         (`&`). If you absolutely need to mutate the input, consider internal
  [31m│[0m         mutability (e.g. `RefCell`).

[31m[1mERROR[0m[39m: 
  [31m×[0m You can't inject a mutable reference as an input parameter to
  [31m│[0m `app::error_handler`.
  [31m│[0m
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:35:1]
  [31m│[0m  [2m35[0m │     bp.route(GET, "/home", f!(crate::handler))
  [31m│[0m  [2m36[0m │         .error_handler(f!(crate::error_handler));
  [31m│[0m     · [35;1m                       ────────────┬───────────[0m
  [31m│[0m     ·                   [35;1mThe error handler was registered here[0m
  [31m│[0m  [2m37[0m │     bp
  [31m│[0m     ╰────
  [31m│[0m     ╭─[[36;1;4msrc/lib.rs[0m:10:1]
  [31m│[0m  [2m10[0m │ 
  [31m│[0m  [2m11[0m │ pub fn error_handler(e: &pavex::Error, s: &mut String) -> Response {
  [31m│[0m     · [35;1m                                       ───────┬──────[0m
  [31m│[0m     ·                                               [35;1m╰── The &mut input[0m
  [31m│[0m  [2m12[0m │     todo!()
  [31m│[0m     ╰────
  [31m│[0m [36m  help: [0mInjected inputs can only be taken by value or via a shared reference
  [31m│[0m         (`&`). If you absolutely need to mutate the input, consider internal
  [31m│[0m         mutability (e.g. `RefCell`).