Module 如何从子模块中的结构访问专用字段?
我想将我的rust模块拆分为单独的文件。所以我用了一个子模块。问题是我无法从子模块中定义的结构访问私有字段。以下是一个例子:Module 如何从子模块中的结构访问专用字段?,module,rust,field,private,Module,Rust,Field,Private,我想将我的rust模块拆分为单独的文件。所以我用了一个子模块。问题是我无法从子模块中定义的结构访问私有字段。以下是一个例子: // mod1.rs mod point; struct Point1 { x: i32, y: i32, } impl Point1 { pub fn new(x: i32, y: i32) -> Point1 { Point1 { x: x, y: y } } } pub fn run() { let
// mod1.rs
mod point;
struct Point1 {
x: i32,
y: i32,
}
impl Point1 {
pub fn new(x: i32, y: i32) -> Point1 {
Point1 { x: x, y: y }
}
}
pub fn run() {
let a = Point1::new(1, 2);
let b = point::Point2::new(3, 4);
println!("{}, {}", a.x, a.y); // 1, 2
println!("{}, {}", b.x, b.y); // error
}
// point.rs
pub struct Point2 {
x: i32,
y: i32,
}
impl Point2 {
pub fn new(x: i32, y: i32) -> Point2 {
Point2 { x: x, y: y }
}
}
如何将代码拆分为单独的文件,并且仍然访问结构的私有成员?您可以使用pub super将某些内容仅公开给其父模块
pub struct Point2 {
pub (super) x: i32,
pub (super) y: i32,
}
查看上的rust文档。您可以使用pub super将某些内容仅公开给其父模块
pub struct Point2 {
pub (super) x: i32,
pub (super) y: i32,
}
看看上面的锈迹文件。正是我要找的!正是我要找的!