17个版本
使用旧Rust 2015
0.4.13 | 2017年7月16日 |
---|---|
0.4.12 | 2017年1月26日 |
0.4.11 | 2016年11月23日 |
0.4.9 | 2016年7月10日 |
0.4.1 | 2015年7月10日 |
#1541 in Rust模式
每月 23 次下载
7KB
94 行
wrapping_macros
封装算术的宏。
任何位于 wrapping! { .. }
块内的代码将被转换如下
a + b
变为a.wrapping_add(b)
. 类似地,对于-
、*
、/
、%
、<<
、>>
。a += b
变为a = a.wrapping_add(b)
. 类似地,对于-=
、*=
、/=
、%=
、<<=
、>>=
。-a
变为a.wrapping_neg()
.
请参阅此内部线程,了解此crate背后的动机。
注意:此crate使用内部编译器API,因此需要Rust Nightly版本。
Cargo
将以下内容添加到您的 Cargo.toml
wrapping_macros = "*"
示例
#![feature(plugin)]
#![plugin(wrapping_macros)]
fn main() {
let mut sum = 0u8;
for x in 0u8..50 {
wrapping! {
sum += x;
}
}
}
注意事项
-
此crate使用不稳定API,并且仅在Rust Nightly上工作。
-
您不能在
wrapping!
块内嵌套另一个宏调用。例如,以下内容将无法正常工作let x = 41i32; wrapping! { println!("The answer is {}", x + 1); //~ ERROR }
相反,将宏调用移出块外
let x = 41i32; println!("The answer is {}", wrapping! { x + 1 });