2016-04-23 166 views

回答

3

下面是我提出的解決方案,即將秒數乘以十億,將其加至納秒,然後除以1e6。

let nanos = timeout_duration.subsec_nanos() as u64; 
let ms = (1000*1000*1000 * timeout_duration.as_secs() + nanos)/(1000 * 1000); 
+6

我寧願乘以1000秒,然後添加'nanos/1000000'。溢出風險較小。 – llogiq

+0

'subsec_nanos'不會返回經過的納秒數。它代表持續時間的精確度。 –

+0

@ w.brian文檔中的示例https://doc.rust-lang.org/std/time/struct.Duration.html#method.subsec_nanos支持事實:該方法返回持續時間的小數部分,以納秒爲單位,所以答案對我來說似乎是正確的。 – poros