Есть ли у Rust такая вещь, как "частная черта"?
Я имею в виду, что черта, определенная без pub
, является ключевым словом private *
Код ниже дает ошибку компиляции:
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
для типа &_
"? Невозможно импортировать признак из exe crate, и даже если это возможно, это не признак 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!();
}
}
}