小编Dav*_*ski的帖子

如何在 Rust 中为延迟计算的值正确实现缓存结构?

在 Rust 中,我正在寻找一种更简洁和惯用的方法来为昂贵的计算定义缓存。

The Rust Programming Language第二版的第 13 章中,作者为读者留下了一个练习来重构一个结构以返回延迟计算的值。

经过四天的反复试验,我想出了:

use std::collections::HashMap;

#[allow(dead_code)]
struct Cache<T> 
    where T: Fn(u32) -> u32
{
    calculation: T,
    internal: HashMap<u32, u32>
}

#[allow(dead_code)]
impl<T> Cache<T>
    where T: Fn(u32) -> u32
{
    fn new(calculation: T) -> Cache<T> {
        Cache {
            calculation,
            internal: HashMap::new(),
        }
    }

    fn set(&mut self, arg: u32, value: u32) -> u32 {
        self.internal.insert(arg, value);
        self.get(arg)
    }

    fn get(&mut self, arg: u32) -> u32 {
        self.internal[&arg]
    }

    fn value(&mut self, arg: u32) …
Run Code Online (Sandbox Code Playgroud)

rust

6
推荐指数
1
解决办法
505
查看次数

标签 统计

rust ×1