vortex_vector/null/
scalar.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use crate::Scalar;
5use crate::ScalarOps;
6use crate::VectorMut;
7use crate::null::NullVectorMut;
8
9/// Represents a null scalar value.
10#[derive(Clone, Debug, PartialEq, Eq)]
11pub struct NullScalar;
12
13impl ScalarOps for NullScalar {
14    fn is_valid(&self) -> bool {
15        false
16    }
17
18    fn mask_validity(&mut self, _mask: bool) {}
19
20    fn repeat(&self, n: usize) -> VectorMut {
21        NullVectorMut::new(n).into()
22    }
23}
24
25impl From<NullScalar> for Scalar {
26    fn from(val: NullScalar) -> Self {
27        Scalar::Null(val)
28    }
29}