use std::sync::Arc;
use crate::Version;
use super::{ColumnId, ReadableColumnarVec, schema::validate_column};
pub struct LazyColumnVec<S, C>
where
C: ColumnId,
S: ReadableColumnarVec<C>,
{
pub(super) name: Arc<str>,
pub(super) base_version: Version,
pub(super) source: S,
pub(super) column: C,
}
impl<S, C> LazyColumnVec<S, C>
where
C: ColumnId,
S: ReadableColumnarVec<C>,
{
pub(super) fn new(name: &str, version: Version, source: S, column: C) -> Self {
validate_column(column);
Self {
name: name.into(),
base_version: version,
source,
column,
}
}
}
impl<S, C> Clone for LazyColumnVec<S, C>
where
C: ColumnId,
S: ReadableColumnarVec<C>,
{
fn clone(&self) -> Self {
Self {
name: Arc::clone(&self.name),
base_version: self.base_version,
source: self.source.clone(),
column: self.column,
}
}
}