如何添加绑定到引用私有类型的公共类型的特征?

时间:2019-04-24 01:38:36

标签: rust traits type-bounds

我有一个公共通用类型,可以包装一个私有通用类型。我想说明一下,只要私有类型也可以,我的公共类型就会实现特征:

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

0 个答案:

没有答案