struct Counter<T>
where
T: Fn() -> i32,
{
generator: T,
val: i32,
}
impl<T> Counter<T>
where
T: Fn() -> i32,
{
pub fn new(gen: T) -> Counter<T> {
Counter {
generator: gen,
val: 0,
}
}
pub fn next(&mut self) {
self.val = (self.generator)(); // This works
// self.val = self.generator(); // This does not work
}
pub fn get(&self) -> i32 {
self.val
}
}
The above is a small example where I am using a closure in a struct. When I call the closure via generator() I get no method named generator found. When I wrap it with () this does not happen. Why is that?