vortex_vector/bool/
scalar.rs1use crate::bool::BoolVectorMut;
5use crate::{Scalar, ScalarOps, VectorMut, VectorMutOps};
6
7#[derive(Debug)]
9pub struct BoolScalar(Option<bool>);
10
11impl From<Option<bool>> for BoolScalar {
12 fn from(value: Option<bool>) -> Self {
13 Self(value)
14 }
15}
16
17impl ScalarOps for BoolScalar {
18 fn is_valid(&self) -> bool {
19 self.0.is_some()
20 }
21
22 fn repeat(&self, n: usize) -> VectorMut {
23 let mut vec = BoolVectorMut::with_capacity(n);
24 match self.0 {
25 None => vec.append_nulls(n),
26 Some(value) => vec.append_values(value, n),
27 }
28 vec.into()
29 }
30}
31
32impl From<BoolScalar> for Scalar {
33 fn from(val: BoolScalar) -> Self {
34 Scalar::Bool(val)
35 }
36}