考虑一些不可访问但实现 API 特征的结构 (HiddenInaccessibleStruct)。获取此隐藏类型的对象的唯一方法是调用返回此类型的不透明实现的函数。另一个结构体拥有某种类型,它利用了这个 API 特征。目前,似乎无法在fn new(). 下面的代码也可以在 Rust Playgrounds中找到。
// -- public api
trait Bound {
fn call(&self) -> Self;
}
// this is not visible
#[derive(Default)]
struct HiddenInaccessibleStruct;
impl Bound for HiddenInaccessibleStruct {
fn call(&self) -> Self { }
}
// -- public api
pub fn load() -> impl Bound {
HiddenInaccessibleStruct::default()
}
struct Abc<T> where T : Bound {
field : T
}
impl<T> Abc<T> where T : Bound {
pub fn new() -> …Run Code Online (Sandbox Code Playgroud) rust ×1