use std::future::Future;
use std::pin::Pin;
use crate::storage::StorageError;
#[doc(hidden)]
pub trait StorageChangeSource: Send {
fn changed(&mut self) -> Pin<Box<dyn Future<Output = Result<(), StorageError>> + Send + '_>>;
}
#[expect(missing_debug_implementations)]
pub struct StorageChangeWatch {
source: Box<dyn StorageChangeSource>,
}
impl StorageChangeWatch {
#[doc(hidden)]
pub fn from_source(source: impl StorageChangeSource + 'static) -> Self {
Self {
source: Box::new(source),
}
}
pub async fn changed(&mut self) -> Result<(), StorageError> {
self.source.changed().await
}
}