【发布时间】:2020-06-20 07:26:13
【问题描述】:
我试图用固定的时间测试我的代码。所以我写了这样的东西:
use std::time::{SystemTime, UNIX_EPOCH};
trait Clock {
fn now(&self) -> SystemTime;
}
trait MixInClock {
type Impl;
}
struct RealClock;
impl<T: MixInClock<Impl = RealClock>> Clock for T {
fn now(&self) -> SystemTime {
SystemTime::now()
}
}
struct FakeClock;
impl <T: MixInClock<Impl = FakeClock>> Clock for T {
fn now(&self) -> SystemTime {
UNIX_EPOCH
}
}
struct DIContainer;
impl MixInClock for DIContainer {
type Impl = FakeClock;
}
这段代码给了我一个错误:
error[E0119]: conflicting implementations of trait `Clock`:
--> src/lib.rs:19:1
|
12 | impl<T: MixInClock<Impl = RealClock>> Clock for T {
| ------------------------------------------------- first implementation here
...
19 | impl <T: MixInClock<Impl = FakeClock>> Clock for T {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
为什么? T 不可能同时实现 MixInClock<Impl = RealClock> 和 MixInClock<Impl = FakeClock>。对吧?
【问题讨论】:
标签: rust