我目前正在学习Rust(到目前为止1周),并且我想测试我的代码。

我有这个结构:

pub struct MyStruct {
  pub field1: i64,
  field2: i64
}

impl MyStruct {
  pub fn new(a: i64) -> MyStruct {
    MyStruct { field1: a, field2: 0 }
  }
}

现在,在另一个模块的测试中,我想创建一个具有特定MyStructfield2,但是它是私有(private)的。

有没有一种方法可以为MyStruct创建一个特殊的构造函数呢?

最佳答案

您可以在同一模块中编写单元测试,也可以为测试创建子模块。同一模块和所有嵌套模块中的代码都可以完全访问私有(private)字段。

// Your struct

mod test {
    use super::MyStruct;
    fn test() {
        let _ = MyStruct{ field1: 1, field2: 2 };
    }
}

10-08 17:54
查看更多