我试图将我的项目拆分为多个文件,但在将它们导入到我的main.rs中时遇到问题,因为它说列的字段是私有的,但我已将 struct 声明为公共的.

src/柱.rs

pub struct Column {
    name: String,
    vec: Vec<i32>,
}

src/main.rs

pub mod column;

fn main() {
    let col = column::Column{name:"a".to_string(), vec:vec![1;10]};
    println!("Hello, world!");
}

Cargo 建造

src/main.rs:4:15: 4:75 error: field `name` of struct `column::Column` is private
src/main.rs:4     let col = column::Column{name:"a".to_string(), vec:vec![1;10]};
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/main.rs:4:15: 4:75 error: field `vec` of struct `column::Column` is private
src/main.rs:4     let col = column::Column{name:"a".to_string(), vec:vec![1;10]};

推荐答案

try 将字段标记为公共字段:

pub struct Column {
    pub name: String,
    pub vec: Vec<i32>,
}

Column标记为pub意味着其他模块可以使用 struct 本身,但不一定使用其所有成员.

Rust相关问答推荐

为什么函数不接受选项T参数的所有权?

为什么迭代器上的`. map(...)`的返回类型如此复杂?

如何在tauri—leptos应用程序中监听后端值的变化?""

获取字符串切片(&;str)上的切片([ia..ib])返回字符串

在铁 rust 中传递所有权

如何向下转换到MyStruct并访问Arc Mutex MyStruct实现的方法?

如何实现Serde::Ser::Error的调试

JSON5中的变量类型(serde)

使用Rust WASM读取文件

找不到 .has_func 或 .get_func 的 def

如何迭代存储在 struct 中的字符串向量而不移动它们?

为什么某些类型参数仅在特征边界中使用的代码在没有 PhantomData 的情况下进行编译?

如何为整数切片定义一个带有额外函数的特性别名?

如何在Rust中使用Serde创建一个自定义的反序列化器来处理带有内部标记的枚举

如何为已实现其他相关 std trait 的每个类型实现一个 std Trait

在 Rust 中,Weak 如何知道内部值何时被删除?

类型判断模式匹配panic

Rust 引用元组和引用元组

当用作函数参数时,不强制执行与绑定的关联类型

您如何使用枚举反序列化字符串,其中任何其他值反序列化为新类型变体同时保留字符串?