私の列挙型は、次のようになります。列挙型の値を取得するマクロを作成するにはどうすればよいですか?
#[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 }
}
}
}
今どのように私は、列挙型の値を取得するマクロを作成するのですか?
利用できますか?一致するパターンに応じて、互換性のないタイプの一致を書き込むことはできません。それはちょうどタイプチェックをしません。代わりに、指定された変数の値を抽出しようとするマクロを使用することもできますが、関数を呼び出すこともできます(または単に 'let 'を使用することもできます)。 – aochagavia