#operations #macro #compiled #equations #proc-macro #arithmetica

nightly macro no-std compile_ops

编译时操作,使用方程编码以不影响您的性能和constness

4个版本

0.1.3 2020年1月3日
0.1.2 2019年12月27日
0.1.1 2019年12月24日
0.1.0 2019年12月23日

#31 in #equations


2 个crate中使用(通过col_macros

无许可证

17KB
323

compile_ops

这个Rust库提供了一系列宏,可以将加法、减法、除法、乘法或幂运算的结果展开,还提供了一个宏来组合它们。

所有宏都支持通过在它们之前使用'!'来排除表达式,这在您无法阻止代码在传递的标记内部展开时非常有用;现在只能通过MBE展开循环实现。

此crate为无std

示例

#![feature(proc_macro_hygiene)]

use compile_ops::*;

assert_eq!(2, add!(1!5, !5, 1)); // five it is not invited...
assert_eq!(2, sub!(3, 1));
assert_eq!(2, mul!(2, 1));
assert_eq!(2, div!(4, 2));
assert_eq!(2, rem!(11, 3));

assert_eq!(2, ops!(2 % 2 + 2 * 2 ^ 1 / 1 - 2)); 

lib.rs:

此crate提供了一系列宏,可以将加法、减法、除法、乘法或幂运算的结果展开,还提供了一个宏来组合它们。

所有宏都支持通过在它们之前使用'!'来排除表达式,这在您无法阻止代码在传递的标记内部展开时非常有用;现在只能通过MBE展开循环实现。

此crate为无std

示例

#![feature(proc_macro_hygiene)]

use compile_ops::*;

assert_eq!(2, add!(1!5, !5, 1)); // five it is not invited...
assert_eq!(2, sub!(3, 1));
assert_eq!(2, mul!(2, 1));
assert_eq!(2, div!(4, 2));
assert_eq!(2, rem!(11, 3));

assert_eq!(2, ops!(2 % 2 + 2 * 2 ^ 1 / 1 - 2)); 

无运行时依赖