0
点赞
收藏
分享

微信扫一扫

rust Closure

老榆 2024-03-15 阅读 16

struct Cacher<T,E>

where

T: Fn(E) -> E,

E: Copy

{

query: T,

value: Option<E>,

}

impl<T,E> Cacher<T,E>

where

T: Fn(E) -> E,

E: Copy

{

fn new(query: T) -> Cacher<T,E> {

Cacher {

query,

value: None,

}

}

fn value(&mut self, arg: E) -> E {

match self.value {

Some(v) => v,

None => {

let v = (self.query)(arg);

self.value = Some(v);

v

}

}

}

}

fn main() {

}

#[test]

fn call_with_different_values() {

let mut c = Cacher::new(|a| a);

let v1 = c.value(1);

let v2 = c.value(2);

assert_eq!(v2, 1);

}

你可以在这里找到答案(在 solutions 路径下)

Iterator

你可以在这里找到答案(在 solutions 路径下)

newtype and Sized

Smart pointers

Box

Deref

Drop

Rc and Arc

Cell and RefCell

Weak and Circle reference

Self referential

Threads

Basic using

Message passing

Sync

Atomic

Send and Sync

Global variables

Errors

Unsafe doing

举报

相关推荐

0 条评论