// check-pass

pub trait Fn0: Fn(i32) -> Self::Out {
    type Out;
}

impl<F: Fn(i32) -> ()> Fn0 for F {
    type Out = ();
}

pub fn closure_typer(_: impl Fn0) {}

fn main() {
    closure_typer(move |x| {
        let _: i64 = x.into();
    });
}
