safe_remove/
utils.rs

1use std::num::ParseIntError;
2
3use std::time::Duration;
4
5pub fn parse_duration(s: &str) -> Result<Duration, String> {
6    let len = s.len();
7    if len < 2 {
8        return Err("Invalid duration format".to_string());
9    }
10    let (num_str, unit) = s.split_at(len - 1);
11    let num: u64 = num_str.parse().map_err(|e: ParseIntError| e.to_string())?;
12
13    match unit {
14        "s" => Ok(Duration::from_secs(num)),
15        "m" => Ok(Duration::from_secs(num * 60)),
16        "h" => Ok(Duration::from_secs(num * 60 * 60)),
17        "d" => Ok(Duration::from_secs(num * 60 * 60 * 24)),
18        _ => Err("Invalid duration unit".to_string()),
19    }
20}