1 个不稳定版本
使用旧的 Rust 2015
0.0.1 | 2015年2月17日 |
---|
#8 in #initializing
7KB
var!
一个 Rust 宏,用于在单个语句中声明和初始化多个可变变量。
#[macro_use] extern crate var;
var! {
a = 1,
b: &str = "foo",
c = 3.0,
}
a += 1;
b = "bar";
c *= 7.0;
lib.rs
:
一个宏,用于在单个语句中声明多个可变变量。
var! { ... }
是 let mut x = ...;
的泛化形式,允许同时声明和初始化多个可变变量,受到类似 Nim 和 C# 中的同名关键字的启发。
语法
"var! {"
(
identifier (":" type)? "=" expression
)*
"}"
其中
"..."
表示字面量...
(...)
用于分组*
表示前一个实体可以有零个或多个副本,逗号分隔,可以有可选的尾随逗号?
表示前一个实体可以有零个或一个副本(即可选的)
值得注意的是,
var!
应始终与{}
一起使用,否则将会得到编译错误(使用()
和[]
调用宏意味着其内部被解析为一个表达式,但使用let
声明变量是一个语句),- 需要一个初始化表达式,与传统的
let
不同, - 无法执行模式匹配。
示例
#[macro_use] extern crate var;
fn fibonacci(n: u32) -> u64 {
var! {
a: u64 = 0,
b = 1,
}
for _ in 0..n {
let tmp = a + b;
a = b;
b = tmp;
}
return a
}
fn main() {
assert_eq!(fibonacci(10), 55);
}