我有一个公共通用类型,可以包装一个私有通用类型。我想说明一下,只要私有类型也可以,我的公共类型就会实现特征:
pub trait Example {}
pub struct PubliclyVisible<T>(Inner<T>);
impl<T> Example for PubliclyVisible<T> where Inner<T>: Example {}
struct Inner<T>(T);
impl<T> Example for Inner<T> {}
由于Inner
不公开,因此会产生错误:
error[E0446]: private type `Inner<T>` in public interface
--> src/lib.rs:5:1
|
5 | impl<T> Example for PubliclyVisible<T> where Inner<T>: Example {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private type
6 |
7 | struct Inner<T>(T);
| - `Inner<T>` declared as private
在PubliclyVisible<T>
实现Example
的情况下,是否有某种方式说明“ Inner<T>
实现Example
”而无需公开Inner
?