doku/printers/json/formatting/
enums_style.rs

1use crate::*;
2
3/// Determines how enums should get displayed.
4#[derive(Clone, Debug, Serialize, Deserialize)]
5#[serde(deny_unknown_fields)]
6pub enum EnumsStyle {
7    /// Displays enum variants as comments:
8    ///
9    /// ```
10    /// use doku::Document;
11    ///
12    /// #[derive(Document)]
13    /// struct Person {
14    ///     favourite_color: Color,
15    /// }
16    ///
17    /// #[derive(Document)]
18    /// enum Color {
19    ///     Red,
20    ///     Green,
21    ///     Blue,
22    /// }
23    ///
24    /// let fmt = doku::json::Formatting {
25    ///     enums_style: doku::json::EnumsStyle::Commented,
26    ///     ..Default::default()
27    /// };
28    ///
29    /// let doc = doku::to_json_fmt::<Person>(&fmt);
30    ///
31    /// doku::assert_doc!(r#"
32    ///   {
33    ///     // Possible variants:
34    ///     // - "Red"
35    ///     // - "Green"
36    ///     // - "Blue"
37    ///     "favourite_color": "Red"
38    ///   }
39    /// "#, doc);
40    /// ```
41    Commented,
42
43    /// Displays enum variants as separated with a pipe:
44    ///
45    /// ```
46    /// use doku::Document;
47    ///
48    /// #[derive(Document)]
49    /// struct Person {
50    ///     favourite_color: Color,
51    /// }
52    ///
53    /// #[derive(Document)]
54    /// enum Color {
55    ///     Red,
56    ///     Green,
57    ///     Blue,
58    /// }
59    ///
60    /// let fmt = doku::json::Formatting {
61    ///     enums_style: doku::json::EnumsStyle::Separated,
62    ///     ..Default::default()
63    /// };
64    ///
65    /// let doc = doku::to_json_fmt::<Person>(&fmt);
66    ///
67    /// doku::assert_doc!(r#"
68    ///   {
69    ///     "favourite_color": "Red" | "Green" | "Blue"
70    ///   }
71    /// "#, doc);
72    /// ```
73    Separated,
74}
75
76impl Default for EnumsStyle {
77    fn default() -> Self {
78        Self::Separated
79    }
80}