我当前在我的Rust代码中使用枚举,并且为它们实现了Display trait。但是,每当我在此枚举上调用to_string()时,我都希望Display trait中的fmt函数访问一些共享的字符串,该字符串可以被所有枚举变体看到。一旦有了该字符串,就将其写入文件。目前,我只是打开一个文件,并为每个to_string调用写入文件。这是我所拥有的:
use std::fmt;
use std::fs;
pub enum Ast {
A,
B,
C,
}
impl fmt::Display for Ast {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Ast::A => {
foo();
write!(f, " ... ")
}
Ast::B => {
foo();
write!(f, "...")
}
Ast::C => {
foo();
write!(f, "...")
}
}
}
}
fn foo() {
let data: String = String::from("This is data");
fs::write("src/file.txt", data).expect("Could not open file");
}
相反,我想在文件顶部声明一个foo能够访问和变异的String变量。有什么办法吗?谢谢