//@ run-rustfix
fn foo<T: Default + Clone>(list: &mut Vec<T>) {
    let mut cloned_items = Vec::new();
    for v in list.iter() {
        cloned_items.push(v.clone())
    }
    list.push(T::default());
    //~^ ERROR cannot borrow `*list` as mutable because it is also borrowed as immutable
    drop(cloned_items);
}
fn bar<T: std::fmt::Display + Clone>(x: T) {
    let a = &x;
    let b = a.clone();
    drop(x);
    //~^ ERROR cannot move out of `x` because it is borrowed
    println!("{b}");
}
#[derive(Debug)]
#[derive(Clone)]
struct A;
fn qux(x: A) {
    let a = &x;
    let b = a.clone();
    drop(x);
    //~^ ERROR cannot move out of `x` because it is borrowed
    println!("{b:?}");
}
fn main() {
    foo(&mut vec![1, 2, 3]);
    bar("");
    qux(A);
}
