use std::sync::Arc;
use anyhow::Result;
use kingfisher_vectorscan::{BlockDatabase, BlockScanner};
pub struct ScannerPool {
inner: kingfisher_rules::scanner_pool::ScannerPool,
}
impl ScannerPool {
pub fn new(db: Arc<BlockDatabase>) -> Self {
Self { inner: kingfisher_rules::scanner_pool::ScannerPool::new(db) }
}
pub fn with<F, R>(&self, f: F) -> R
where
F: for<'db> FnOnce(&mut BlockScanner<'db>) -> R,
{
self.inner.with(f)
}
pub fn try_with<F, R>(&self, f: F) -> Result<R>
where
F: for<'db> FnOnce(&mut BlockScanner<'db>) -> R,
{
self.inner.try_with(f)
}
}