相关疑难解决方法(0)

如何将枚举中的元素(变体)数量作为常量值?

有没有办法提取枚举中的元素数量?

简单的例子(用虚构的number_of_elements方法):

enum FooBar { A = 0, B, C, };

println!("Number of items: {}", FooBar.number_of_elements());
// "Number of items: 3"
Run Code Online (Sandbox Code Playgroud)

在C中,我通常会......

enum FooBar { A = 0, B, C, };
#define FOOBAR_NUMBER_OF_ITEMS (C + 1)
Run Code Online (Sandbox Code Playgroud)

但是相当于Rust的Rust不起作用:

enum FooBar { A = 0, B, C, };
const FOOBAR_NUMBER_OF_ITEMS: usize = (C as usize) + 1;

// Raises an error:
//     unimplemented constant expression: enum variants
Run Code Online (Sandbox Code Playgroud)

包括枚举中的最后一项是非常不方便的,因为如果不考虑所有成员,匹配的枚举将会出错.

enum FooBar { A = 0, B, C, FOOBAR_NUMBER_OF_ITEMS, };
Run Code Online (Sandbox Code Playgroud)

有没有办法将枚举中的项目数作为常量值?


注意:即使这与问题没有直接关系,我之所以想要这个功能,是因为我正在使用 …

enums rust

12
推荐指数
3
解决办法
2877
查看次数

标签 统计

enums ×1

rust ×1