#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::time::Duration; fn main() { let res = Duration::try_from_secs_f64(0.0); assert_eq!(res, Ok(Duration::new(0, 0))); let res = Duration::try_from_secs_f64(1e-20); assert_eq!(res, Ok(Duration::new(0, 0))); let res = Duration::try_from_secs_f64(4.2e-7); assert_eq!(res, Ok(Duration::new(0, 420))); let res = Duration::try_from_secs_f64(2.7); assert_eq!(res, Ok(Duration::new(2, 700_000_000))); let res = Duration::try_from_secs_f64(3e10); assert_eq!(res, Ok(Duration::new(30_000_000_000, 0))); let res = Duration::try_from_secs_f64(f64::from_bits(1)); assert_eq!(res, Ok(Duration::new(0, 0))); let res = Duration::try_from_secs_f64(-5.0); assert!(res.is_err()); let res = Duration::try_from_secs_f64(f64::NAN); assert!(res.is_err()); let res = Duration::try_from_secs_f64(2e19); assert!(res.is_err()); let res = Duration::try_from_secs_f64(0.999e-9); assert_eq!(res, Ok(Duration::new(0, 1))); let res = Duration::try_from_secs_f64(0.999_999_999_499); assert_eq!(res, Ok(Duration::new(0, 999_999_999))); let res = Duration::try_from_secs_f64(0.999_999_999_501); assert_eq!(res, Ok(Duration::new(1, 0))); let res = Duration::try_from_secs_f64(42.999_999_999_499); assert_eq!(res, Ok(Duration::new(42, 999_999_999))); let res = Duration::try_from_secs_f64(42.999_999_999_501); assert_eq!(res, Ok(Duration::new(43, 0))); let val = f64::from_bits(0x3F50_0000_0000_0000); let res = Duration::try_from_secs_f64(val); assert_eq!(res, Ok(Duration::new(0, 976_562))); let val = f64::from_bits(0x3F68_0000_0000_0000); let res = Duration::try_from_secs_f64(val); assert_eq!(res, Ok(Duration::new(0, 2_929_688))); let val = f64::from_bits(0x3FF0_0400_0000_0000); let res = Duration::try_from_secs_f64(val); assert_eq!(res, Ok(Duration::new(1, 976_562))); let val = f64::from_bits(0x3_FF00_C000_0000_000); let res = Duration::try_from_secs_f64(val); assert_eq!(res, Ok(Duration::new(1, 2_929_688))); }