请问
pub enum Symbol {
BraceL { a: i32 },
BraceR { b: u32 },
}
比如有上面枚举类型 Symbol
,我想表示 Symbol::BraceL
这个类型,并想用类型作为函数参数,但又不想这样
Symbol::BraceL { a: 1 }.type_id()
因为我还没有拿到一个对象,也不想再定义一个新枚举
pub enum SymbolType {
BraceL,
BraceR,
}
有什么好办法呢?
1
共 3 条评论, 1 页
评论区
写评论不确定这个是不是你想要的:
std::mem::discriminant
首先,目前枚举的所有实例共享type_id,也就是说对于类型系统来说无论具体是哪个枚举,
BraceL
和BraceR
的type_id都是一样的其次既然是要传参,那么参数肯定有类型,这个类型又不是原枚举类型,所以肯定需要新类型,所以还是定义一个新枚举吧。
→ playground