我可以在Rust中创建字符串枚举吗?

克尔兹斯托夫·卡钦斯基

我想知道是否可以enum在Rust中使用常量字符串值创建在SO上,我发现了一个问题:如何获取枚举作为字符串?这很有帮助,并向我展示了我可以做的工作,以将enum()的键字符串化(可以.to_sting()enum键上使用并以字符串形式获取名称)。

我要实现的目标:

enum StringEnum {
    Hello = "Hello",
    World = "World"
}
易卜拉欣·艾哈迈德(Ibraheem Ahmed)

如果在Rust中有这样的枚举:

enum MyEnum {
    Hello,
    World
}

Hello并且World是枚举变量在Rust中,将每个变体表示为字符串将不起作用,因为每个变体的字符串(长度不同)将占用不同数量的字节。

Rust中枚举的每个变体都分配给一个整数值。之所以可行,是因为机器整数占用了指定的位数(例如i32vs i8),因此每个变体都有相同的大小。

如果希望将枚举转换为字符串,则需要实现method / formatter。最简单的方法是使用strum_macros板条箱:

#[derive(strum_macros::Display)]
pub enum StringEnum {
    Hello,
    World
}


fn main() {
    let hello: &'static str = StringEnum::Hello.into(); // "Hello"
    let world: String = StringEnum::World.to_string(); // "World"
}

我如何以字符串形式获取枚举中提到了其他两种方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rust宏可以创建编译时字符串吗?

我可以通过在C#中串联字符串和整数常量来创建字符串常量吗?

我可以在Scala中创建空的元组或字符串吗?

使用枚举字符串时,可以从分配的值中获取枚举键吗?

我可以在格式字符串中添加变量吗?

我可以在Node中执行字符串命令吗?

我可以从字符串中获取列名吗?

我可以在protobuf中定义常量字符串吗?

我可以在宏中取消字符串吗?

我可以在python函数中搜索字符串吗?

我可以配置 Gremlin GraphBinary 将枚举序列化为字符串吗?

我可以在 kotlin 中使用字符串访问枚举属性吗?

枚举可以返回字符串而不是整数吗?

我可以将重复的字符串存储在字符串数组中吗?

我可以提取包含R中任何字符串向量的字符串吗

我可以从字符串字节改变枚举类型?

如果字符串中包含空格,我仍然可以在字符串上使用tsort吗?

我可以限制Rust枚举的大小吗?

在Rust中,您可以拥有字符串文字吗?

'\'可以在Python字符串中吗?

我可以创建字符串和atomic <int>键值对的unordered_map吗?

我可以从 json 字符串创建一个 const 对象吗?

我可以从HTML字符串或dom节点/元素创建React元素吗

我可以创建混合原语和字符串的可迭代对象吗?

我可以在运行时通过评估字符串来创建函数吗?

我可以从已知位置开始并以给定字符结束的字符串中删除子字符串吗?

在模型中,从字符串值创建枚举

如何在Kotlin中从字符串创建枚举?

在 Go 语言中,我可以在结构中定义字符串的允许值和/或仅通过构造函数强制创建吗?还是避免直接创建结构?