Используйте замыкание в методе struct надлежащим образом - PullRequest
1 голос
/ 01 мая 2019

Пожалуйста, помогите мне понять, есть ли лучший способ написания кода, который будет изменять переменную замыкания и изменять поведение метода struct

fn main() {
    let me = Person {
        name: String::from("Anton"),
        age: 26,
    };

    let mut x = 0;
    let mut counter = |x: &mut i32| *x += 1;

    println!("x equals: {}", x);
    me.print_info(&mut counter, &mut x).print_info(&mut counter, &mut x);
    println!("x equals: {}", x);
}

struct Person {
    name: String,
    age: u32,
}

impl Person {
    fn print_info(&self, counter: &mut FnMut(&mut i32), x: &mut i32) -> &Self {
        if *x > 0 {
            println!("I never repeat twice");
        } else {
            println!("My name is {} and I am {} years old", self.name, self.age);
        }
        counter(x);
        self
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...