apivolve_generator_api/gen1/data/
declared.rs1use ::serde::Deserialize;
2use ::serde::Serialize;
3
4use crate::gen1::data::{Typ, TypId};
5use crate::util::Identifier;
6
7#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
10#[serde(deny_unknown_fields)]
11pub struct UnionType {
12 id: TypId,
13 name: Option<Identifier>,
14 options: Vec<NamedType>,
15}
16
17impl UnionType {
18 pub fn new(name: Option<Identifier>, options: impl Into<Vec<NamedType>>) -> Self {
19 UnionType {
20 id: 0, name,
22 options: options.into(),
23 }
24 }
25}
26
27#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
28#[serde(deny_unknown_fields)]
29pub struct RecordType {
30 id: TypId,
31 name: Option<Identifier>,
32 values: Vec<NamedType>,
33}
34
35impl RecordType {
36 pub fn new(name: Option<Identifier>, values: impl Into<Vec<NamedType>>) -> Self {
37 RecordType {
38 id: 0, name,
40 values: values.into(),
41 }
42 }
43
44 pub fn named(name: Identifier, values: impl Into<Vec<NamedType>>) -> Self {
45 RecordType::new(Some(name), values)
46 }
47}
48
49#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
50#[serde(deny_unknown_fields)]
51pub struct NamedType {
52 name: Identifier,
53 typ: Typ,
54}
55
56impl NamedType {
57 pub fn new(name: Identifier, typ: Typ) -> Self {
58 NamedType { name, typ }
59 }
60}