extern crate chrono;
use chrono::{DateTime, Utc};
use std::time::Duration;
pub fn after(start: DateTime<Utc>) -> DateTime<Utc> {
start + Duration::from_secs(1)
}
出现以下错误:
error[E0277]: cannot add `std::time::Duration` to `chrono::DateTime<chrono::Utc>`
--> src/lib.rs:7:11
|
7 | start + Duration::from_secs(1_000_000_000)
| ^ no implementation for `chrono::DateTime<chrono::Utc> + std::time::Duration`
|
= help: the trait `std::ops::Add<std::time::Duration>` is not implemented for `chrono::DateTime<chrono::Utc>`
我找不到一个可以导入的Add
实现。 use chrono::*
无法帮助。
我看到datetime.rs
有一个Add<chrono::oldtime::Duration>
的impl,但是oldtime
是私有的,所以我不知道如何创建oldtime::Duration
。
如何获得我需要的Add
实现? 如何将std::time::Duration
转换为chrono::oldtime::Duration
? 有没有可以隐式转换的导入?
我正在使用rustc 1.25.0 (84203cac6 2018-03-25)
chrono::Duration
。 - Victor Bassotime::Duration
”(@E_net4的答案),我不明白它是如何出现在chrono
命名空间中的。我甚至可以在std::time
和chrono::oldtime
的源代码中找到定义的Duration(IDE会带我去那里)。但我无法直接在chrono
中看到它。关于Rust模块如何工作,我肯定还有些不理解,我会再犯这个错误的。 - Victor Bassopub use
重新导出东西。这里是Duration
如何出现在chrono
的根目录中的链接。我已经相应地更新了我的答案。 - E net4