如何解决是否可以编写一个宏来对其输入进行位操作并用作匹配中的模式?
我正在用Rust编写一个终端文本编辑器,并且一直跟随着guide written for C。该指南中的建议是使用宏,以简化对是否同时按下键和ctrl的测试:
#define CTRL_KEY(k) ((k) & 0x1f)
我没有在Rust中编写很多宏,并且在重新创建此宏方面没有取得太大的成功。这是我编写的宏:
macro_rules! ctrl_key {
( $x: expr ) => {{
$x & 0b00011111
}};
}
我将其用作匹配条件:
match value {
ctrl_key!(b'q') => break,_ => {}
}
编译器告诉我this macro call doesn't expand to a pattern in this macro invocation
。是否可以编写一个宏来完成我要完成的事情(特别是在匹配条件的情况下)?我是否可以使用宏将其转换为字节,所以只需要写b'q'
来代替'q'
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。