payjp_shared/
metadata.rs

1/// キーバリューの任意データ
2///
3/// For more details see <<https://pay.jp/docs/api>>.
4#[derive(Copy,Clone,Debug,)]#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
6pub struct Metadata {
7
8}
9#[doc(hidden)]
10pub struct MetadataBuilder {
11    
12}
13
14#[allow(unused_variables, irrefutable_let_patterns, clippy::let_unit_value, clippy::match_single_binding, clippy::single_match)]
15const _: () = {
16    use miniserde::de::{Map, Visitor};
17    use miniserde::json::Value;
18    use miniserde::{make_place, Deserialize, Result};
19    use payjp_types::{MapBuilder, ObjectDeser};
20    use payjp_types::miniserde_helpers::FromValueOpt;
21
22    make_place!(Place);
23
24    impl Deserialize for Metadata {
25    fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
26       Place::new(out)
27    }
28}
29
30struct Builder<'a> {
31    out: &'a mut Option<Metadata>,
32    builder: MetadataBuilder,
33}
34
35impl Visitor for Place<Metadata> {
36    fn map(&mut self) -> Result<Box<dyn Map + '_>> {
37        Ok(Box::new(Builder {
38            out: &mut self.out,
39            builder: MetadataBuilder::deser_default(),
40        }))
41    }
42}
43
44impl MapBuilder for MetadataBuilder {
45    type Out = Metadata;
46    fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
47        Ok(match k {
48            
49            _ => <dyn Visitor>::ignore(),
50        })
51    }
52
53    fn deser_default() -> Self {
54        Self {
55            
56        }
57    }
58
59    fn take_out(&mut self) -> Option<Self::Out> {
60        let () = () else {
61            return None;
62        };
63        Some(Self::Out {  })
64    }
65}
66
67impl<'a> Map for Builder<'a> {
68    fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
69        self.builder.key(k)
70    }
71
72    fn finish(&mut self) -> Result<()> {
73        *self.out = self.builder.take_out();
74        Ok(())
75    }
76}
77
78impl ObjectDeser for Metadata {
79    type Builder = MetadataBuilder;
80}
81
82impl FromValueOpt for Metadata {
83    fn from_value(v: Value) -> Option<Self> {
84        let Value::Object(obj) = v else {
85            return None;
86        };
87        let mut b = MetadataBuilder::deser_default();
88        for (k, v) in obj {
89            match k.as_str() {
90                
91                _ => {}
92            }
93        }
94        b.take_out()
95    }
96}
97
98};