use std::ops::Deref;
use std::sync::Arc;
pub(crate) enum SharedOrOwned<T> {
Shared(Arc<T>),
Owned(T),
}
impl<T> Deref for SharedOrOwned<T> {
type Target = T;
fn deref(&self) -> &T {
match self {
SharedOrOwned::Shared(arc) => arc,
SharedOrOwned::Owned(value) => value,
}
}
}