use std::sync::RwLock;
#[derive(Debug)]
pub struct UserCache {
user: RwLock<Option<crate::User>>,
}
impl UserCache {
pub fn new(user: Option<crate::User>) -> Self {
Self {
user: RwLock::new(user),
}
}
pub fn get(&self) -> Option<crate::User> {
self.user.read().ok().and_then(|user| user.clone())
}
pub fn set(&self, user: crate::User) {
if let Ok(mut current) = self.user.write() {
*current = Some(user);
}
}
}
impl Default for UserCache {
fn default() -> Self {
Self::new(None)
}
}