Why Duration::as/from_millis()
uses different primitives?
Duration::as_millis()
returns as u128
, while
Duration::from_millis(u64)
takes an u64
.
What's the cause for this that you can not do this...
let d = Duration::from_millis(Duration::from_secs(0).as_millis());
error[E0308]: mismatched types
--> src/...
|
20 | let d = Duration::from_millis(Duration::from_secs(0).as_millis());
| --------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `u128`
| |
| arguments to this function are incorrect
|
note: associated function defined here
--> /.../toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/time.rs:245:18
|
245 | pub const fn from_millis(millis: u64) -> Duration {
| ^^^^^^^^^^^
help: you can convert a `u128` to a `u64` and panic if the converted value doesn't fit
|
20 | let d = Duration::from_millis(Duration::from_secs(0).as_millis().try_into().unwrap());
| ++++++++++++++++++++