icydb_schema/node/
tuple.rs1use crate::prelude::*;
2
3#[derive(Clone, Debug, Serialize)]
8pub struct Tuple {
9 def: Def,
10 values: &'static [Value],
11 ty: Type,
12}
13
14impl Tuple {
15 #[must_use]
17 pub const fn new(def: Def, values: &'static [Value], ty: Type) -> Self {
18 Self { def, values, ty }
19 }
20
21 #[must_use]
23 pub const fn def(&self) -> &Def {
24 &self.def
25 }
26
27 #[must_use]
29 pub const fn values(&self) -> &'static [Value] {
30 self.values
31 }
32
33 #[must_use]
35 pub const fn ty(&self) -> &Type {
36 &self.ty
37 }
38}
39
40impl MacroNode for Tuple {
41 fn as_any(&self) -> &dyn std::any::Any {
42 self
43 }
44}
45
46impl TypeNode for Tuple {
47 fn ty(&self) -> &Type {
48 self.ty()
49 }
50}
51
52impl ValidateNode for Tuple {}
53
54impl VisitableNode for Tuple {
55 fn route_key(&self) -> String {
56 self.def().path()
57 }
58
59 fn drive<V: Visitor>(&self, v: &mut V) {
60 self.def().accept(v);
61 for node in self.values() {
62 node.accept(v);
63 }
64 self.ty().accept(v);
65 }
66}