E0687 - Error codes index
Description: Book listing all Rust error codes

# Error code E0687

#### Note: this error code is no longer emitted by the compiler.

In-band lifetimes cannot be used in `fn`/`Fn` syntax.

Erroneous code examples:

    #![feature(in_band_lifetimes)]

    fn foo(x: fn(&'a u32)) {} // error!

    fn bar(x: &Fn(&'a u32)) {} // error!

    fn baz(x: fn(&'a u32), y: &'a u32) {} // error!

    struct Foo<'a> { x: &'a u32 }

    impl Foo<'a> {
        fn bar(&self, x: fn(&'a u32)) {} // error!
    }

Lifetimes used in `fn` or `Fn` syntax must be explicitly declared using `<...>` binders. For example:

    #![allow(unused)]
    fn main() {
    fn foo<'a>(x: fn(&'a u32)) {} // ok!

    fn bar<'a>(x: &Fn(&'a u32)) {} // ok!

    fn baz<'a>(x: fn(&'a u32), y: &'a u32) {} // ok!

    struct Foo<'a> { x: &'a u32 }

    impl<'a> Foo<'a> {
        fn bar(&self, x: fn(&'a u32)) {} // ok!
    }
    }