rustybook-messenger 0.2.1

Messenger client for Rustybook
Documentation
use parking_lot::RwLock;

use crate::client::models::User;

#[derive(Debug)]
pub struct UserCache {
    user: RwLock<Option<User>>,
}

impl UserCache {
    pub fn new(user: Option<User>) -> Self {
        Self {
            user: RwLock::new(user),
        }
    }

    pub fn get(&self) -> Option<User> {
        let user = self.user.read();

        user.as_ref().map(|user| user.clone())
    }

    pub fn set(&self, user: User) {
        let mut current = self.user.write();

        *current = Some(user);
    }
}

impl Default for UserCache {
    fn default() -> Self {
        Self::new(None)
    }
}