是否可以忽略 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 的指数?的主要内容,如果未能解决你的问题,请参考以下文章

是否有公式可以找到浮点数中指数或有效位数的位数?

.NET 货币指数 ISO_4217

从科学记数法中提取指数

李雅普诺夫指数

Rust VS Python:为啥越来越流行,取代榜一 Python?

GIF规范中“背景色指数”的解读