Skip to main content

rdf_fusion_encoding/string/
scalar.rs

1use crate::EncodingScalar;
2use crate::string::{STRING_ENCODING, StringEncoding, StringEncodingRef};
3use datafusion::common::ScalarValue;
4use std::sync::Arc;
5
6#[derive(Debug, Clone)]
7pub struct StringEncodingScalar {
8    inner: ScalarValue,
9    encoding: StringEncodingRef,
10}
11
12impl StringEncodingScalar {
13    pub fn new_unchecked(inner: ScalarValue) -> Self {
14        Self {
15            inner,
16            encoding: Arc::clone(&STRING_ENCODING),
17        }
18    }
19}
20
21impl EncodingScalar for StringEncodingScalar {
22    type Encoding = StringEncoding;
23
24    fn encoding(&self) -> &Arc<Self::Encoding> {
25        &self.encoding
26    }
27
28    fn scalar_value(&self) -> &ScalarValue {
29        &self.inner
30    }
31
32    fn into_scalar_value(self) -> ScalarValue {
33        self.inner
34    }
35}