Enums 如何访问枚举变量未命名字段?

Enums 如何访问枚举变量未命名字段?,enums,rust,Enums,Rust,我想打印没有命名字段的元组枚举数据 元组是将具有各种类型的一些其他值组合到一个复合类型中的一般方法 #[derive(Debug)] enum Coin { Penny(String), Nickel { id: String }, } fn main() { let penny = Coin::Penny(String::from("penny")); let nickel: Coin = Coin::Nickel { id: String::from("ni

我想打印没有命名字段的元组枚举数据

元组是将具有各种类型的一些其他值组合到一个复合类型中的一般方法

#[derive(Debug)]
enum Coin {
    Penny(String),
    Nickel { id: String },
}

fn main() {
    let penny = Coin::Penny(String::from("penny"));
    let nickel: Coin = Coin::Nickel { id: String::from("nickel") };

    println!("{} {:?} ", penny.0, penny);
    println!("{:?}", nickel);
}
在本例中,
Nickel
是一个类似于结构的枚举变量,而
Penny
只是被称为一个

我得到一个编译器错误:

错误[E0609]:类型“Coin”上没有字段“0”`
有关此错误的详细信息,请尝试“rustc--explain E0609”。

您可以使用
match
语句或
if let
语句来使用变量的关联值:

#[derive(Debug)]
enum Coin {
    Penny(String),
    Nickel { id: String },
}

fn main() {
    let penny = Coin::Penny(String::from("penny"));
    let nickel: Coin = Coin::Nickel {
        id: String::from("nickel"),
    };

    if let Coin::Penny(name) = penny {
        println!("{}", name);
    }

    if let Coin::Nickel{ id } = nickel {
        println!("{}", id);
    }
}

使用
匹配
语句的示例:

#[derive(Debug)]
enum Coin {
    Penny(String),
    Nickel { id: String },
}

fn main() {
    let penny = Coin::Penny(String::from("penny"));
    let nickel: Coin = Coin::Nickel {
        id: String::from("nickel"),
    };

    match &penny {
        Coin::Penny(id) => {
            println!("{}; {:?}", id, penny);
        }
        _ => {}
    }

    match &nickel {
        Coin::Nickel { id } => {
            println!("{}; {:?}", id, nickel);
        }
        _ => {}
    }
}

如果该值是动态的,而我们不知道是哪个变量,该怎么办