use std::sync::Arc;
use crate::Extensions;
#[derive(Clone, Debug)]
pub struct ReadOnlyExtensions(Arc<Extensions>);
impl ReadOnlyExtensions {
pub fn new(ext: Extensions) -> Self {
ReadOnlyExtensions(Arc::new(ext))
}
pub fn get<T: Send + Sync + 'static>(&self) -> Option<&T> {
self.0.get()
}
pub fn len(&self) -> usize {
self.0.len()
}
pub fn is_empty(&self) -> bool {
self.0.is_empty()
}
}
impl From<Extensions> for ReadOnlyExtensions {
fn from(ext: Extensions) -> Self {
ReadOnlyExtensions::new(ext)
}
}