Rust 编程视频教程(进阶)——005_2 使用带有泛型和 Fn trait 的闭包

视频地址

头条地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

讲解内容

例子://实现一个缓存,值处理第一次传入的值并保存

struct Cacher<T>
    where T: Fn(u32) -> u32 //泛型和fn trait
{ 
    calculation: T, //T是一个闭包
    value: Option<u32>,
}

impl<T> Cacher<T>
    where T: Fn(u32) -> u32 
{
    fn new (calculation: T) -> Cacher<T> {
        Cacher {
            calculation,
            value: None,
        }
    }

    fn value(&mut self, arg: u32) -> u32 {
        match self.value {
            Some(v) => v,
            None => {
                let v = (self.calculation)(arg);
                self.value = Some(v);
                v
            },
        }
    }
}

fn main() {
    let mut c = Cacher::new(|a| a);
    let v1 = c.value(1);
    println!("v1 = {}", v1);
    let v2 = c.value(2);
    println!("v2 = {}", v2);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
令狐一冲
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
255
粉丝
119
喜欢
308
收藏
128
排名:335
访问:2.8 万
私信
所有博文
社区赞助商