1pub trait VerbArgument: Sized + 'static {
5 const TYPE_NAME: &'static str;
9
10 fn from_value(value: &kdl::KdlEntry) -> Option<Self>;
15}
16
17impl VerbArgument for String {
18 const TYPE_NAME: &'static str = "string";
19 fn from_value(value: &kdl::KdlEntry) -> Option<Self> {
20 value.value().as_string().map(ToOwned::to_owned)
21 }
22}
23
24impl VerbArgument for usize {
25 const TYPE_NAME: &'static str = "integer";
26 fn from_value(value: &kdl::KdlEntry) -> Option<Self> {
27 value.value().as_integer().map(|i| i as usize)
28 }
29}