1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//! Renderer-independent help-page domain model.
//!
//! The model carries pre-rendered strings only — no dependency on any command
//! framework's type system. The producing side (e.g. `unilang`'s help adapter)
//! converts its own definitions into these structs; every renderer in this
//! crate consumes them unchanged.
/// Help data for one command parameter.
///
/// `#[ non_exhaustive ]` blocks external struct literals so fields can be added
/// without breaking consumers. Construct via `Default` + field assignment:
///
/// ```
/// use unilang_help::HelpParamData;
/// let mut param = HelpParamData::default();
/// param.name = "scope".into();
/// param.kind = "Enum".into();
/// param.kind_compact = "enum".into();
/// param.choices = vec![ "local".into(), "global".into() ];
/// assert!( !param.optional );
/// ```
///
/// External struct expressions fail to compile (E0639):
///
/// ```compile_fail
/// let _ = unilang_help::HelpParamData
/// {
/// name : String::new(), kind : String::new(), kind_compact : String::new(),
/// description : String::new(), hint : String::new(), optional : false,
/// multiple : false, default : None, choices : vec![], validation_rules : vec![],
/// aliases : vec![], examples : vec![],
/// };
/// ```
/// Help data for one command, including its parameters.
///
/// `#[ non_exhaustive ]` blocks external struct literals; construct via
/// `Default` + field assignment:
///
/// ```
/// use unilang_help::{ HelpCommandData, HelpParamData };
/// let mut cmd = HelpCommandData::default();
/// cmd.name = ".file.copy".into();
/// cmd.description = "Copy a file.".into();
/// cmd.params.push( HelpParamData::default() );
/// assert_eq!( cmd.params.len(), 1 );
/// ```
///
/// External struct expressions fail to compile (E0639):
///
/// ```compile_fail
/// let _ = unilang_help::HelpCommandData
/// {
/// name : String::new(), description : String::new(), hint : String::new(),
/// version : String::new(), status : String::new(), show_version : true,
/// aliases : vec![], tags : vec![], examples : vec![], params : vec![],
/// };
/// ```