是否可以忽略 Rust 的指数?
Posted
技术标签:
【中文标题】是否可以忽略 Rust 的指数?【英文标题】:Is it possible to ignore Rust's exponents? 【发布时间】:2021-10-01 10:13:57 【问题描述】:我试图在 Rust 宏中使用字母“E”而不触发数学指数。这是一个例子:
macro_rules! test
(0e) =>
// Do something
;
fn main()
test!(0e);
这给出了错误error: expected at least one digit in exponent
。可以无视吗?我知道我可以用其他方式写这个,但由于一致性,我更喜欢这样写。
谢谢。
【问题讨论】:
没有。 “0e”在传递给宏之前被标记化,宏只看到“完成”的语言项目,如文字、表达式、块等。您需要更具体地了解您想要实现的目标,以便人们可以来找到替代品。 @user2722968 我并不是真的在寻找替代品,我只是想知道是否有办法跳过 Rust 编译器将其标记为数学指数。谢谢你的回答。 【参考方案1】:宏输入是一系列标记树,已使用与 Rust 代码相同的标记器进行解析。虽然您可以使用宏创建新语法,但您仍然仅限于处理 Rust 中的有效标记。
即使是过程宏也无法做到这一点,因为错误发生在调用宏的代码中,在它看到输入之前。
解决方法是要求输入是字符串。然后,程序宏可以根据您的喜好对其进行解析。
【讨论】:
以上是关于是否可以忽略 Rust 的指数?的主要内容,如果未能解决你的问题,请参考以下文章