use async_trait::async_trait;
use super::expiry_cache::CachedToken;
#[async_trait]
pub trait TokenPersister<T>: Send + Sync {
async fn load(&self) -> Option<CachedToken<T>>;
async fn save(&self, token: &CachedToken<T>);
async fn clear(&self);
}
#[derive(Debug, Default)]
pub struct InMemoryPersister;
#[async_trait]
impl<T: Send + Sync> TokenPersister<T> for InMemoryPersister {
async fn load(&self) -> Option<CachedToken<T>> {
None
}
async fn save(&self, _token: &CachedToken<T>) {}
async fn clear(&self) {}
}