ust*_*ion 10 encapsulation rust
在某些情况下,我想利用Rust中的任何替代方法来解决C++的friend关键字.在箱子A中我有以下模块:
mod a0:
pub struct A {
pub a0: u8,
a1: SomeType,
}
impl A {
pub fn fa0(...) { ... }
fn fa1(...) { ... }
}
Run Code Online (Sandbox Code Playgroud)
模块b0并c0需要访问所有公共和私人成员A.代码不能这样做,除非它在mod a0.我只想暴露A,A::a0并A::fa0与其他与此箱子接口的箱子,但在这个箱子里我想要访问A(公共和私人)的完整实现.
我通常最终做的事情如下:
mod a0:
pub struct A {
pub a0: u8,
inner: Inner
}
pub struct Inner { /* all pub fields */ }
pub fn get_inner<'a>(obj: &'a mut A) -> &'a Inner {
&mut obj.inner
}
Run Code Online (Sandbox Code Playgroud)
模块b0和c0访问get_inner,因此Inner,在lib.rs我做:
mod a0;
mod b0;
mod c0;
pub use a0::A; // so other crates cannot use get_inner(...) etc.
Run Code Online (Sandbox Code Playgroud)
这似乎很复杂,我似乎错过了一些东西.或者这是唯一的方法吗?
| 归档时间: |
|
| 查看次数: |
926 次 |
| 最近记录: |