error[E0502]: cannot borrow `*list` as mutable because it is also borrowed as immutable
  --> $DIR/clone-on-ref.rs:7:5
   |
LL |     for v in list.iter() {
   |              ---- immutable borrow occurs here
LL |         cloned_items.push(v.clone())
   |                             ------- this call doesn't do anything, the result is still `&T` because `T` doesn't implement `Clone`
LL |     }
LL |     list.push(T::default());
   |     ^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
LL |
LL |     drop(cloned_items);
   |          ------------ immutable borrow later used here
   |
help: consider further restricting this bound
   |
LL | fn foo<T: Default + Clone>(list: &mut Vec<T>) {
   |                   +++++++

error[E0505]: cannot move out of `x` because it is borrowed
  --> $DIR/clone-on-ref.rs:14:10
   |
LL | fn bar<T: std::fmt::Display>(x: T) {
   |                              - binding `x` declared here
LL |     let a = &x;
   |             -- borrow of `x` occurs here
LL |     let b = a.clone();
   |               ------- this call doesn't do anything, the result is still `&T` because `T` doesn't implement `Clone`
LL |     drop(x);
   |          ^ move out of `x` occurs here
LL |
LL |     println!("{b}");
   |               --- borrow later used here
   |
help: if `T` implemented `Clone`, you could clone the value
  --> $DIR/clone-on-ref.rs:11:8
   |
LL | fn bar<T: std::fmt::Display>(x: T) {
   |        ^ consider constraining this type parameter with `Clone`
LL |     let a = &x;
   |              - you could clone this value
help: consider further restricting this bound
   |
LL | fn bar<T: std::fmt::Display + Clone>(x: T) {
   |                             +++++++

error[E0505]: cannot move out of `x` because it is borrowed
  --> $DIR/clone-on-ref.rs:23:10
   |
LL | fn qux(x: A) {
   |        - binding `x` declared here
LL |     let a = &x;
   |             -- borrow of `x` occurs here
LL |     let b = a.clone();
   |               ------- this call doesn't do anything, the result is still `&A` because `A` doesn't implement `Clone`
LL |     drop(x);
   |          ^ move out of `x` occurs here
LL |
LL |     println!("{b:?}");
   |               ----- borrow later used here
   |
note: if `A` implemented `Clone`, you could clone the value
  --> $DIR/clone-on-ref.rs:19:1
   |
LL | struct A;
   | ^^^^^^^^ consider implementing `Clone` for this type
LL | fn qux(x: A) {
LL |     let a = &x;
   |              - you could clone this value
help: consider annotating `A` with `#[derive(Clone)]`
   |
LL + #[derive(Clone)]
LL | struct A;
   |

error: aborting due to 3 previous errors

Some errors have detailed explanations: E0502, E0505.
For more information about an error, try `rustc --explain E0502`.
