error[E0261]: use of undeclared lifetime name `'a`
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:11:22
   |
LL |     fn bar(self, _: &'a Trait) {}
   |                      ^^ undeclared lifetime
   |
help: consider introducing lifetime `'a` here
   |
LL |     fn bar<'a>(self, _: &'a Trait) {}
   |           ++++
help: consider introducing lifetime `'a` here
   |
LL | impl<'a> IceCream {
   |     ++++

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:21:17
   |
LL |     fn cat() -> &Trait {
   |                 ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
   |
LL |     fn cat() -> &'static Trait {
   |                  +++++++

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:27:21
   |
LL |     fn dog<'a>() -> &Trait {
   |                     ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'a` lifetime
   |
LL |     fn dog<'a>() -> &'a Trait {
   |                      ++

error[E0261]: use of undeclared lifetime name `'a`
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:33:21
   |
LL |     fn kitten() -> &'a Trait {
   |                     ^^ undeclared lifetime
   |
help: consider introducing lifetime `'a` here
   |
LL |     fn kitten<'a>() -> &'a Trait {
   |              ++++
help: consider introducing lifetime `'a` here
   |
LL | impl<'a> IceCream {
   |     ++++

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:44:20
   |
LL |     fn parrot() -> &mut Trait {
   |                    ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
   |
LL |     fn parrot() -> &'static mut Trait {
   |                     +++++++

error[E0261]: use of undeclared lifetime name `'a`
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:55:16
   |
LL |     fn bar(_: &'a Trait);
   |                ^^ undeclared lifetime
   |
help: consider introducing lifetime `'a` here
   |
LL |     fn bar<'a>(_: &'a Trait);
   |           ++++
help: consider introducing lifetime `'a` here
   |
LL | trait Sing<'a> {
   |           ++++

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:65:17
   |
LL |     fn cat() -> &Trait;
   |                 ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
   |
LL |     fn cat() -> &'static Trait;
   |                  +++++++
help: instead, you are more likely to want to return an owned value
   |
LL -     fn cat() -> &Trait;
LL +     fn cat() -> Trait;
   |

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:69:21
   |
LL |     fn dog<'a>() -> &Trait {
   |                     ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'a` lifetime
   |
LL |     fn dog<'a>() -> &'a Trait {
   |                      ++

error[E0261]: use of undeclared lifetime name `'a`
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:75:21
   |
LL |     fn kitten() -> &'a Trait {
   |                     ^^ undeclared lifetime
   |
help: consider introducing lifetime `'a` here
   |
LL |     fn kitten<'a>() -> &'a Trait {
   |              ++++
help: consider introducing lifetime `'a` here
   |
LL | trait Sing<'a> {
   |           ++++

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:86:20
   |
LL |     fn parrot() -> &mut Trait {
   |                    ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
   |
LL |     fn parrot() -> &'static mut Trait {
   |                     +++++++

error[E0261]: use of undeclared lifetime name `'a`
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:96:12
   |
LL | fn bar(_: &'a Trait) {}
   |       -    ^^ undeclared lifetime
   |       |
   |       help: consider introducing lifetime `'a` here: `<'a>`

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:110:13
   |
LL | fn cat() -> &Trait {
   |             ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
   |
LL | fn cat() -> &'static Trait {
   |              +++++++

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:116:17
   |
LL | fn dog<'a>() -> &Trait {
   |                 ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'a` lifetime
   |
LL | fn dog<'a>() -> &'a Trait {
   |                  ++

error[E0261]: use of undeclared lifetime name `'a`
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:122:17
   |
LL | fn kitten() -> &'a Trait {
   |          -      ^^ undeclared lifetime
   |          |
   |          help: consider introducing lifetime `'a` here: `<'a>`

error[E0106]: missing lifetime specifier
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:133:16
   |
LL | fn parrot() -> &mut Trait {
   |                ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
   |
LL | fn parrot() -> &'static mut Trait {
   |                 +++++++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:52:16
   |
LL |     fn foo(_: &Trait);
   |                ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn foo<T: Trait>(_: &T);
   |           ++++++++++     ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn foo(_: &impl Trait);
   |                ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn foo(_: &dyn Trait);
   |                +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:55:19
   |
LL |     fn bar(_: &'a Trait);
   |                   ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn bar<T: Trait>(_: &'a T);
   |           ++++++++++        ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn bar(_: &'a impl Trait);
   |                   ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn bar(_: &'a dyn Trait);
   |                   +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:59:22
   |
LL |     fn alice<'a>(_: &Trait);
   |                      ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn alice<'a, T: Trait>(_: &T);
   |                ++++++++++      ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn alice<'a>(_: &impl Trait);
   |                      ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn alice<'a>(_: &dyn Trait);
   |                      +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:62:23
   |
LL |     fn bob<'a>(_: &'a Trait);
   |                       ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn bob<'a, T: Trait>(_: &'a T);
   |              ++++++++++         ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn bob<'a>(_: &'a impl Trait);
   |                       ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn bob<'a>(_: &'a dyn Trait);
   |                       +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:65:18
   |
LL |     fn cat() -> &Trait;
   |                  ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn cat() -> &impl Trait;
   |                  ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn cat() -> Box<dyn Trait>;
   |                 ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:69:22
   |
LL |     fn dog<'a>() -> &Trait {
   |                      ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn dog<'a>() -> &impl Trait {
   |                      ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn dog<'a>() -> Box<dyn Trait> {
   |                     ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:75:24
   |
LL |     fn kitten() -> &'a Trait {
   |                        ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn kitten() -> &'a impl Trait {
   |                        ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn kitten() -> Box<dyn Trait> {
   |                    ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:81:27
   |
LL |     fn puppy<'a>() -> &'a Trait {
   |                           ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn puppy<'a>() -> &'a impl Trait {
   |                           ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn puppy<'a>() -> Box<dyn Trait> {
   |                       ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:86:25
   |
LL |     fn parrot() -> &mut Trait {
   |                         ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn parrot() -> &mut impl Trait {
   |                         ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn parrot() -> Box<dyn Trait> {
   |                    ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:93:12
   |
LL | fn foo(_: &Trait) {}
   |            ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL | fn foo<T: Trait>(_: &T) {}
   |       ++++++++++     ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL | fn foo(_: &impl Trait) {}
   |            ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL | fn foo(_: &dyn Trait) {}
   |            +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:96:15
   |
LL | fn bar(_: &'a Trait) {}
   |               ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL | fn bar<T: Trait>(_: &'a T) {}
   |       ++++++++++        ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL | fn bar(_: &'a impl Trait) {}
   |               ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL | fn bar(_: &'a dyn Trait) {}
   |               +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:100:18
   |
LL | fn alice<'a>(_: &Trait) {}
   |                  ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL | fn alice<'a, T: Trait>(_: &T) {}
   |            ++++++++++      ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL | fn alice<'a>(_: &impl Trait) {}
   |                  ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL | fn alice<'a>(_: &dyn Trait) {}
   |                  +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:103:19
   |
LL | fn bob<'a>(_: &'a Trait) {}
   |                   ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL | fn bob<'a, T: Trait>(_: &'a T) {}
   |          ++++++++++         ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL | fn bob<'a>(_: &'a impl Trait) {}
   |                   ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL | fn bob<'a>(_: &'a dyn Trait) {}
   |                   +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:110:14
   |
LL | fn cat() -> &Trait {
   |              ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL | fn cat() -> &impl Trait {
   |              ++++
help: alternatively, you can return an owned trait object
   |
LL | fn cat() -> Box<dyn Trait> {
   |             ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:116:18
   |
LL | fn dog<'a>() -> &Trait {
   |                  ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL | fn dog<'a>() -> &impl Trait {
   |                  ++++
help: alternatively, you can return an owned trait object
   |
LL | fn dog<'a>() -> Box<dyn Trait> {
   |                 ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:122:20
   |
LL | fn kitten() -> &'a Trait {
   |                    ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL | fn kitten() -> &'a impl Trait {
   |                    ++++
help: alternatively, you can return an owned trait object
   |
LL | fn kitten() -> Box<dyn Trait> {
   |                ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:128:23
   |
LL | fn puppy<'a>() -> &'a Trait {
   |                       ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL | fn puppy<'a>() -> &'a impl Trait {
   |                       ++++
help: alternatively, you can return an owned trait object
   |
LL | fn puppy<'a>() -> Box<dyn Trait> {
   |                   ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:133:21
   |
LL | fn parrot() -> &mut Trait {
   |                     ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL | fn parrot() -> &mut impl Trait {
   |                     ++++
help: alternatively, you can return an owned trait object
   |
LL | fn parrot() -> Box<dyn Trait> {
   |                ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:8:16
   |
LL |     fn foo(_: &Trait) {}
   |                ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn foo<T: Trait>(_: &T) {}
   |           ++++++++++     ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn foo(_: &impl Trait) {}
   |                ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn foo(_: &dyn Trait) {}
   |                +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:11:25
   |
LL |     fn bar(self, _: &'a Trait) {}
   |                         ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn bar<T: Trait>(self, _: &'a T) {}
   |           ++++++++++              ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn bar(self, _: &'a impl Trait) {}
   |                         ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn bar(self, _: &'a dyn Trait) {}
   |                         +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:15:29
   |
LL |     fn alice<'a>(&self, _: &Trait) {}
   |                             ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn alice<'a, T: Trait>(&self, _: &T) {}
   |                ++++++++++             ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn alice<'a>(&self, _: &impl Trait) {}
   |                             ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn alice<'a>(&self, _: &dyn Trait) {}
   |                             +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:18:23
   |
LL |     fn bob<'a>(_: &'a Trait) {}
   |                       ^^^^^
   |
help: use a new generic type parameter, constrained by `Trait`
   |
LL |     fn bob<'a, T: Trait>(_: &'a T) {}
   |              ++++++++++         ~
help: you can also use an opaque type, but users won't be able to specify the type parameter when calling the `fn`, having to rely exclusively on type inference
   |
LL |     fn bob<'a>(_: &'a impl Trait) {}
   |                       ++++
help: alternatively, use a trait object to accept any type that implements `Trait`, accessing its methods at runtime using dynamic dispatch
   |
LL |     fn bob<'a>(_: &'a dyn Trait) {}
   |                       +++

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:21:18
   |
LL |     fn cat() -> &Trait {
   |                  ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn cat() -> &impl Trait {
   |                  ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn cat() -> Box<dyn Trait> {
   |                 ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:27:22
   |
LL |     fn dog<'a>() -> &Trait {
   |                      ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn dog<'a>() -> &impl Trait {
   |                      ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn dog<'a>() -> Box<dyn Trait> {
   |                     ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:33:24
   |
LL |     fn kitten() -> &'a Trait {
   |                        ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn kitten() -> &'a impl Trait {
   |                        ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn kitten() -> Box<dyn Trait> {
   |                    ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:39:27
   |
LL |     fn puppy<'a>() -> &'a Trait {
   |                           ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn puppy<'a>() -> &'a impl Trait {
   |                           ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn puppy<'a>() -> Box<dyn Trait> {
   |                       ~~~~~~~~~~~~~~

error[E0782]: expected a type, found a trait
  --> $DIR/reference-to-bare-trait-in-fn-inputs-and-outputs-issue-125139.rs:44:25
   |
LL |     fn parrot() -> &mut Trait {
   |                         ^^^^^
   |
help: use `impl Trait` to return an opaque type, as long as you return a single underlying type
   |
LL |     fn parrot() -> &mut impl Trait {
   |                         ++++
help: alternatively, you can return an owned trait object
   |
LL |     fn parrot() -> Box<dyn Trait> {
   |                    ~~~~~~~~~~~~~~

error: aborting due to 42 previous errors

Some errors have detailed explanations: E0106, E0261, E0782.
For more information about an error, try `rustc --explain E0106`.
