P.TYP.SCT.01 为结构体实现构造性方法时,避免构造后再初始化的情况
【描述】
跟其他OOP 或 FP 语言不一样, Rust 的惯用方式是构建即初始化。
【反例】
#![allow(unused)] fn main() { // 不符合 // 先构建 let mut dict = Dictionary::new(); // 后初始化 dict.load_from_file("./words.txt")?; }
【正例】
#![allow(unused)] fn main() { // 符合 // 构建即初始化 let dict = Dictionary::from_file("./words.txt")?; impl Dictionary { fn from_file(filename: impl AsRef<Path>) -> Result<Self, Error> { let text = std::fs::read_to_string(filename)?; // 不会去存储空状态 let mut words = Vec::new(); for line in text.lines() { words.push(line); } Ok(Dictionary { words }) } } }