fn factory() -> (Fn(i32) -> i32) {
let num = 5;
|x| x + num
}
fn main() {
let f = factory();
let answer = f(1);
assert_eq!(6, answer);
}
I don't know why, It just get a compile error, use rust 1.4 stable.
fn factory() -> (Fn(i32) -> i32) {
let num = 5;
|x| x + num
}
fn main() {
let f = factory();
let answer = f(1);
assert_eq!(6, answer);
}
I don't know why, It just get a compile error, use rust 1.4 stable.
This example seems pretty outdated. In Rust 1.x it would look like
fn factory() -> Box<Fn(i32) -> i32> {
let num = 5;
Box::new(move |x| x + num)
}
fn main() {
let f = factory();
let answer = f(1);
assert_eq!(6, answer);
}
See Baby Steps and Finding Closure in Rust | Huon on the internet.