use arrow::array::UInt64Array;
pub trait FromWithValidity<T> {
fn from_with_validity(value: T) -> Self;
}
pub trait FromIteratorWithValidity<A: Sized> {
fn from_iter_with_validity<T: IntoIterator<Item = A>>(iter: T) -> Self;
}
impl<T> FromWithValidity<Vec<u64>> for T
where
T: FromIteratorWithValidity<u64>,
{
fn from_with_validity(value: Vec<u64>) -> Self {
Self::from_iter_with_validity(value)
}
}
impl<T> FromWithValidity<Vec<Option<u64>>> for T
where
T: FromIteratorWithValidity<Option<u64>>,
{
fn from_with_validity(value: Vec<Option<u64>>) -> Self {
Self::from_iter_with_validity(value)
}
}
impl<T> FromWithValidity<UInt64Array> for T
where
T: FromIteratorWithValidity<Option<u64>>,
{
fn from_with_validity(value: UInt64Array) -> Self {
Self::from_iter_with_validity(value.iter())
}
}