Modify value outside of closure : I'm trying to change value of `date` in TimeTravel. Comments indicate what values I would like, but it's not what I get.

    use std::cell::{Cell};
    
    #[derive(Debug)]
    #[derive(Clone)]
    pub struct TimeTravel {
        pub date: Cell<i32>,
    }
    
    impl TimeTravel {
        pub fn new() -> Self {
            TimeTravel{
                date: Cell::new(1),
            }
        }
    
        pub fn forward(&self) -> &Self {
            let d = self.date.get();
            self.date.set(d + 1);
            self
        }
    }
    
    fn main() {
        let travel: TimeTravel = TimeTravel::new();
        println!("{:?}", travel); // 1
        travel.forward();
        println!("{:?}", travel); // 2
        
        {
            let t1 = travel.clone();
            let first = || {
                t1.forward();
                println!("{:?}", t1); // 3
                t1.forward();
                println!("{:?}", t1); // 4
            };
            first();
        }
        
        {
            let t2 = travel.clone();
            let second = || {
                t2.forward();
                println!("{:?}", t2); //5
            };
            second();
        }
    }

However I get this

    TimeTravel { date: Cell { value: 1 } }
    TimeTravel { date: Cell { value: 2 } }
    TimeTravel { date: Cell { value: 3 } }
    TimeTravel { date: Cell { value: 4 } }
    TimeTravel { date: Cell { value: 3 } }

If I understand correctly what is happening, I am changing value in `t1` and `t2`, and not `travel`. How can I change value of `travel` inside a closure? 

[Example in Rust Playground](https://play.rust-lang.org/?gist=a7a21ff881217d703b53209307254b88&version=nightly)