Skip to main content

icydb_schema/node/
value.rs

1use crate::prelude::*;
2
3///
4/// Value
5///
6/// Canonical value descriptor pairing cardinality with one item definition.
7///
8
9#[derive(Clone, Debug, Serialize)]
10pub struct Value {
11    cardinality: Cardinality,
12    item: Item,
13}
14
15impl Value {
16    /// Build one value descriptor from its schema cardinality and item target.
17    #[must_use]
18    pub const fn new(cardinality: Cardinality, item: Item) -> Self {
19        Self { cardinality, item }
20    }
21
22    #[must_use]
23    pub const fn cardinality(&self) -> Cardinality {
24        self.cardinality
25    }
26
27    #[must_use]
28    pub const fn item(&self) -> &Item {
29        &self.item
30    }
31}
32
33impl ValidateNode for Value {}
34
35impl VisitableNode for Value {
36    fn drive<V: Visitor>(&self, v: &mut V) {
37        self.item().accept(v);
38    }
39}