首页 > 解决方案 > 如何返回特定索引处的枚举字符串?

问题描述

实现这一目标的最简单方法是什么?

enum E {
    A,
    B,
    C,
}

// Should return "A" for 0, "B" for 1 and "C" for 2
fn convert(i: u32) -> str {
    // ???
}

标签: enumsrust

解决方案


您不能返回 a str,但可以返回 a &str。结合如何将枚举值与整数匹配?并将枚举作为字符串

#[macro_use]
extern crate strum_macros;
extern crate strum;

use strum::IntoEnumIterator;

#[derive(EnumIter, AsRefStr)]
enum E {
    A,
    B,
    C,
}

fn main() {
    let e = E::iter().nth(2);
    assert_eq!(e.as_ref().map(|e| e.as_ref()), Some("C"));
}

推荐阅读