Tav*_*nes 5 type-inference rust
这段代码:
trait Foo: PartialOrd + PartialOrd<<Self as Foo>::A> {
type A;
}
trait Bar {
type B: Foo;
fn bar(&self) -> Self::B;
}
fn baz<T: Bar>(x: T, y: T) -> bool {
x.bar() < y.bar()
}
Run Code Online (Sandbox Code Playgroud)
无法编译并出现此错误:
trait Foo: PartialOrd + PartialOrd<<Self as Foo>::A> {
type A;
}
trait Bar {
type B: Foo;
fn bar(&self) -> Self::B;
}
fn baz<T: Bar>(x: T, y: T) -> bool {
x.bar() < y.bar()
}
Run Code Online (Sandbox Code Playgroud)
这似乎暗示类型推断正在尝试调用B: PartialOrd<B::A>
impl 而不是B: PartialOrd<B>
也可用的 impl。
这是一个错误还是只是 Rust 类型推断的(有意/无意)限制?
有没有比这更好的解决方法:
<T::B as PartialOrd>::partial_cmp(&x.bar(), &y.bar()) == Some(Ordering::Less)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
96 次 |
最近记录: |