Dzwebs.Net

撰写电脑技术杂文十余年

rust之OnceLock配合static和struct构造计算一次的高效缓存

Admin | 2025-2-8 16:31:13 | 被阅次数 | 74

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆
use std::sync::OnceLock;
#[derive(Debug)]
struct Rectangle {
    width: f64,
    height: f64,
    cached_area: OnceLock,
}
impl Rectangle {
    fn new(width: f64, height: f64) -> Self {
        Rectangle {
            width,
            height,
            cached_area: OnceLock::new(),
        }
    }
    fn area(&self) -> f64 {
        *self.cached_area.get_or_init(|| self.width * self.height)
    }
}
static RECTANGLE:OnceLock = OnceLock::new();
fn main() {
    let rt=RECTANGLE.get_or_init(|| Rectangle::new(2.0,2.0));
    println!("{}", rt.area());
    let rt=RECTANGLE.get_or_init(|| Rectangle::new(2.0,3.0));
    println!("{:?}", rt.cached_area);
}
/*输出如下内容
4
OnceLock(4.0)
*/

该杂文来自: 最新技术

上一篇:rust多线程之共享及修改lazy,strut,enum,arc,mute

下一篇:rust之RefCell配合Option和struct可修改缓存

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计