#macro #initializing #variables #statement #mutable #multiple #declaring

var

一个宏,允许在单个语句中声明和初始化多个可变变量

1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2015年2月17日

#8 in #initializing

MIT/Apache

7KB

var!

Build Status

一个 Rust 宏,用于在单个语句中声明和初始化多个可变变量。

#[macro_use] extern crate var;

var! {
    a = 1,
    b: &str = "foo",
    c = 3.0,
}

a += 1;
b = "bar";
c *= 7.0;

文档crates.io


lib.rs:

一个宏,用于在单个语句中声明多个可变变量。

var! { ... }let mut x = ...; 的泛化形式,允许同时声明和初始化多个可变变量,受到类似 Nim 和 C# 中的同名关键字的启发。

在 crates.io 上可用

语法

"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);
}

没有运行时依赖