有没有办法在枚举变量之间共享可变状态?

时间:2019-07-28 10:22:49

标签: enums rust mutable

我当前在我的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变量。有什么办法吗?谢谢

0 个答案:

没有答案