macro_rules! tool_params {
(@ty req_str) => { ... };
(@ty opt_str) => { ... };
(@ty req_u32) => { ... };
(@ty req_u64) => { ... };
(@ty opt_u32) => { ... };
(@ty opt_u64) => { ... };
(@ty opt_bool) => { ... };
(@ty req_bool) => { ... };
(@ty req_str_array) => { ... };
(@ty opt_str_array) => { ... };
(@ty opt_i64_array) => { ... };
(@json_ty req_str) => { ... };
(@json_ty opt_str) => { ... };
(@json_ty req_u32) => { ... };
(@json_ty req_u64) => { ... };
(@json_ty opt_u32) => { ... };
(@json_ty opt_u64) => { ... };
(@json_ty opt_bool) => { ... };
(@json_ty req_bool) => { ... };
(@required req_str) => { ... };
(@required req_u32) => { ... };
(@required req_u64) => { ... };
(@required req_bool) => { ... };
(@required req_str_array) => { ... };
(@required opt_str) => { ... };
(@required opt_u32) => { ... };
(@required opt_u64) => { ... };
(@required opt_bool) => { ... };
(@required opt_str_array) => { ... };
(@required opt_i64_array) => { ... };
(@lenient req_str, $args:expr, $name:expr) => { ... };
(@lenient opt_str, $args:expr, $name:expr) => { ... };
(@lenient req_u32, $args:expr, $name:expr) => { ... };
(@lenient req_u64, $args:expr, $name:expr) => { ... };
(@lenient opt_u32, $args:expr, $name:expr) => { ... };
(@lenient opt_u64, $args:expr, $name:expr) => { ... };
(@lenient opt_bool, $args:expr, $name:expr) => { ... };
(@lenient req_bool, $args:expr, $name:expr) => { ... };
(@lenient req_str_array, $args:expr, $name:expr) => { ... };
(@lenient opt_str_array, $args:expr, $name:expr) => { ... };
(@lenient opt_i64_array, $args:expr, $name:expr) => { ... };
(@req_accessor $vis:vis, req_u64, $field:ident) => { ... };
(@req_accessor $vis:vis, req_bool, $field:ident) => { ... };
(@req_accessor $vis:vis, $other:ident, $field:ident) => { ... };
(@field_map req_str_array $(, min $min:literal)? $(, max $max:literal)?) => { ... };
(@field_map opt_str_array $(, min $min:literal)? $(, max $max:literal)?) => { ... };
(@field_map opt_i64_array $(, min $min:literal)? $(, max $max:literal)?) => { ... };
(@field_map $kind:ident $(, min $min:literal)? $(, max $max:literal)?) => { ... };
(@array_field_map $item_ty:literal $(, min $min:literal)? $(, max $max:literal)?) => { ... };
(@schema $vis:vis, $( $field:ident : $kind:ident $(min $min:literal)? $(max $max:literal)? $(enum [$($ev:literal),+ $(,)?])? = $desc:literal ),+) => { ... };
(
$(#[$meta:meta])*
$vis:vis struct $name:ident : serde {
$( $field:ident : $kind:ident $(min $min:literal)? $(max $max:literal)? $(enum [$($ev:literal),+ $(,)?])? = $desc:literal ),+ $(,)?
}
) => { ... };
(
$(#[$meta:meta])*
$vis:vis struct $name:ident : lenient {
$( $field:ident : $kind:ident $(min $min:literal)? $(max $max:literal)? $(enum [$($ev:literal),+ $(,)?])? = $desc:literal ),+ $(,)?
}
) => { ... };
}Expand description
Generate a typed tool-args struct + its wire input_schema from ONE table.
See the module docs for the grammar, the two parse
modes (: serde / : lenient), and the byte-identity migration rule.
Consumers need serde (with derive) and serde_json for : serde mode.