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!
}
RunLifetimes used in fn
or Fn
syntax must be explicitly
declared using <...>
binders. For example:
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!
}
Run