返回 CodeWhale
util.rs
根目录 / crates / tui / src / commands / groups / core / util.rs
1 //! Shared helpers for core slash commands.
2
3 pub(super) fn parse_depth_prefixed_arg(
4 arg: Option<&str>,
5 default_depth: u32,
6 ) -> Result<(u32, Option<&str>), String> {
7 let Some(raw) = arg.map(str::trim).filter(|raw| !raw.is_empty()) else {
8 return Ok((default_depth, None));
9 };
10 let mut parts = raw.splitn(2, char::is_whitespace);
11 let first = parts.next().unwrap_or_default();
12 if first.chars().all(|ch| ch.is_ascii_digit()) {
13 let depth: u32 = first
14 .parse()
15 .map_err(|_| "Depth must be an integer from 0 to 3".to_string())?;
16 if depth > 3 {
17 return Err("Depth must be between 0 and 3".to_string());
18 }
19 Ok((depth, parts.next().map(str::trim)))
20 } else {
21 Ok((default_depth, Some(raw)))
22 }
23 }
24
24 lines RUST