OneCompiler

cannot move closure

154

it's ok

fn main() {
    let p = |x| println!("{x}");
    consume(p, 10);
    consume(p, 20);
}

fn consume<F>(f: F, value: u32)
where
    F: Fn(u32),
{
    f(value);
}

it's not allowed

fn main() {
    let p = |x| {
        println!("{x:?}");
    };

    consume(p, 10);
}

fn consume<F>(f: F, value: u32)
where
    F: Fn(u32),
{
    consume_more(f, value);
    consume_more(f, value);
}

fn consume_more<F>(f: F, value: u32)
where
    F: Fn(u32),
{
    f(value);
}