rust单例共享

作者:iohannes 发布时间: 2025-06-13 阅读量:27

导入依赖

[dependencies]
lazy_static = "1.4.0"  # 请确保使用最新版本

定义

use tokio::sync::RwLock;
use std::sync::Arc;

#[derive(Clone)]
struct News {
    title: String,
    content: String,
}

lazy_static::lazy_static! {
    static ref NEWS_CACHE: Arc<RwLock<Vec<News>>> = Arc::new(RwLock::new(Vec::new()));
}

读写

pub async fn get_news() -> Vec<News> {
    let cache = NEWS_CACHE.read().await;
    cache.clone()
}

pub async fn update_news(news: Vec<News>) {
    let mut cache = NEWS_CACHE.write().await;
    *cache = news;
}