【发布时间】:2017-05-10 05:05:15
【问题描述】:
我的枚举如下所示:
#[derive(Clone, Debug)]
pub enum Type {
GLnull,
GLenum(GLenum),
GLboolean(GLboolean),
GLint(GLint),
GLbyte(GLbyte),
GLshort(GLshort),
GLclampx(GLclampx),
GLubyte(GLubyte),
GLushort(GLushort),
GLuint(GLuint),
GLsizei(GLsizei),
GLclampf(GLclampf),
GLdouble(GLdouble),
GLclampd(GLclampd),
GLfloat_4fv((GLfloat, GLfloat, GLfloat, GLfloat)),
GLfloat(GLfloat),
GLintptr(GLintptr),
GLsizeiptr(GLsizeiptr),
GLbitfield(GLbitfield),
GLchar_ptr(String),
}
macro_rules! get{
($e:expr) => {
match $e {
Type::GLsizei(x) => { x }
Type::GLbitfield(x) => { x }
_ => { 0 }
}
}
}
现在如何创建一个获取枚举类型值的宏?
【问题讨论】:
-
您希望它如何工作?根据匹配的模式,您不能编写具有不兼容类型的匹配项。那只是没有类型检查。另一种方法是使用一个宏来尝试提取给定变量的值,但你也可以选择一个函数(或者只使用
if let)。