formatparse_core/
datetime.rs1use crate::error::FormatParseError;
7
8pub fn parse_microsecond_digits(micros_str: &str) -> Result<u32, FormatParseError> {
13 let micros_str = if micros_str.len() > 6 {
14 µs_str[..6]
15 } else {
16 micros_str
17 };
18 let padded = format!("{:0<6}", micros_str);
19 padded.parse::<u32>().map_err(|_| {
20 FormatParseError::ConversionError(micros_str.to_string(), "microseconds".to_string())
21 })
22}
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27
28 #[test]
29 fn parse_microsecond_digits_truncates_and_pads() {
30 assert_eq!(parse_microsecond_digits("123456").unwrap(), 123456);
31 assert_eq!(parse_microsecond_digits("123").unwrap(), 123000);
32 assert_eq!(parse_microsecond_digits("12").unwrap(), 120000);
33 assert_eq!(parse_microsecond_digits("1234567").unwrap(), 123456);
34 }
35}