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!();
}
}
}