Closed
Description
I have the following code:
#[deriving(Clone)]
pub struct Foo {
priv f: fn(char, |char|)
}
impl Foo {
fn bar(&self) {
((*self).f)('a', |c: char| { println!("{}", c); });
}
}
fn bla(c: char, cb: |char|) {
cb(c);
}
pub fn make_foo() -> Foo {
Foo {
f: bla
}
}
fn main() {
let a = make_foo();
a.bar();
}
Which currently produces this error:
test.rs:3:10: 3:29 error: mismatched types: expected `fn(char, |char|)` but found `fn(char, |char|)` (expected concrete lifetime, but found bound lifetime parameter &)
test.rs:3 priv f: fn(char, |char|)
^~~~~~~~~~~~~~~~~~~
note: expected concrete lifetime is lifetime ReInfer(ReVar(middle::ty::RegionVid{id: 22u}))
error: aborting due to previous error
This is apparently caused by the closure passed to the referenced function not having a lifetime.
IMHO this should be perfectly legal, because the struct does not actually reference the closure itself.