aldrin_core/introspection/ir/
function_fallback.rs1use crate::tags::{self, PrimaryTag, Tag};
2use crate::{Serialize, SerializeError, Serializer};
3use num_enum::{IntoPrimitive, TryFromPrimitive};
4
5#[derive(Debug, Clone)]
6pub struct FunctionFallbackIr {
7 pub(crate) name: String,
8 pub(crate) doc: Option<String>,
9}
10
11impl FunctionFallbackIr {
12 pub fn builder(name: impl Into<String>) -> FunctionFallbackIrBuilder {
13 FunctionFallbackIrBuilder::new(name)
14 }
15
16 pub fn name(&self) -> &str {
17 &self.name
18 }
19
20 pub fn doc(&self) -> Option<&str> {
21 self.doc.as_deref()
22 }
23}
24
25#[derive(IntoPrimitive, TryFromPrimitive)]
26#[repr(u32)]
27enum FunctionFallbackField {
28 Name = 0,
29}
30
31impl Tag for FunctionFallbackIr {}
32
33impl PrimaryTag for FunctionFallbackIr {
34 type Tag = Self;
35}
36
37impl Serialize<FunctionFallbackIr> for &FunctionFallbackIr {
38 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
39 let mut serializer = serializer.serialize_struct2()?;
40
41 serializer.serialize::<tags::String>(FunctionFallbackField::Name, &self.name)?;
42
43 serializer.finish()
44 }
45}
46
47#[derive(Debug, Clone)]
48pub struct FunctionFallbackIrBuilder {
49 name: String,
50 doc: Option<String>,
51}
52
53impl FunctionFallbackIrBuilder {
54 fn new(name: impl Into<String>) -> Self {
55 Self {
56 name: name.into(),
57 doc: None,
58 }
59 }
60
61 pub fn doc(mut self, doc: impl Into<String>) -> Self {
62 self.doc = Some(doc.into());
63 self
64 }
65
66 pub fn finish(self) -> FunctionFallbackIr {
67 FunctionFallbackIr {
68 name: self.name,
69 doc: self.doc,
70 }
71 }
72}