私人特质和E0119?

时间:2019-04-23 18:36:58

标签: rust

Rust是否具有“私人特质”之类的东西? 我的意思是没有pub关键字定义的特征是私有的?

下面的代码给出了编译错误:

error[E0119]: conflicting implementations of trait `MyFrom<i64>` for type `std::option::Option<&_>`:
  --> src/main.rs:22:1
   |
16 | impl<T: Foo> MyFrom<i64> for Option<T> {
   | -------------------------------------- first implementation here
...
22 | impl<T: Foo> MyFrom<i64> for Option<&T> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `std::option::Option<&_>`
   |
   = note: downstream crates may implement trait `Foo` for type `&_`

但这不是公共特征,而是exe,“下游板条箱如何为类型Foo实现特征&_”?无法从执行程序中导入特征,即使可能不是pub特征, 所以rustc不支持私人特征?

fn main() {
    trait MyFrom<T> {
        fn my_from(_: T) -> Self;
    }

    trait Foo {}

    impl<T: Foo> MyFrom<i64> for Option<T> {
        fn my_from(x: i64) -> Self {
            unimplemented!();
        }
    }

    impl<T: Foo> MyFrom<i64> for Option<&T> {
        fn my_from(x: i64) -> Self {
            unimplemented!();
        }
    }
}

0 个答案:

没有答案