pub fn new(calculation: T) -> Cacher<T> {
        Cacher {
            calculation,
            value: None
        }
    }
// new return another cacher with close function
new return another cacher with close function
new return another cacher with close function
pub fn new(calculation: T) -> Cacher<T> {
        Cacher {
            calculation,
            value: None
        }
    }
pub fn new ( calculation : T ) -> Cacher < T > { Cacher { calculation , value : None } }
new return another cacher with close function
new return another cacher with close function
calculation
T
calculation
T