我想通过调用给定结构体的new
成员函数来创建一个结构体,方法是只初始化一些字段。我得到了一个错误error[E0063]: missing fields b and join_handle in initializer of B::B
。这是我的示例代码
main.rs
mod B;
mod A;
fn main() {
println!("Hello, world!");
}
A.rs
pub struct AS {
a: String
}
B.rs
use crate::A::AS;
use std::thread;
pub struct B {
a: String,
b: AS,
join_handle: thread::JoinHandle<()>
}
impl B {
fn new() -> B {
B {
a: String::from("Hi"),
}
}
}
如何部分初始化结构体?
2条答案
按热度按时间ftf50wuq1#
你不能部分初始化一个结构体。你可以在
B
中使用Option
s:或者使用构建器:
bnl4lu3b2#
你不能。你不能在Rust中部分初始化任何东西。
也许你需要把一些字段设置为可选字段。