#proc #proc-macro #unroll #range #int

proc_unroll

用于循环展开的进程宏

2个版本

0.1.1 2020年4月21日
0.1.0 2020年4月21日

#7#unroll

MIT/Apache

7KB
141 代码行

proc_unroll 是一个用于在函数内部展开循环的进程宏。它支持以下形式的循环

  • forpatinint..int
  • forpatin &[elem,elem]

示例

使用范围的简单示例

#[proc_unroll::unroll]
fn unrolled() -> Vec<u32> {
    let mut vec = Vec::new();
    for x in 10..20 {
        vec.push(x);
    }
    vec
}
assert_eq!(unrolled(), (10..20).collect::<Vec<_>>());

您也可以在 const fn 中使用它

#[proc_unroll::unroll]
const fn inner() -> i64 {
    let mut total = 0;
    for x in &[5, 15, 30] {
        total += *x;
    }
    total
}

assert_eq!(inner(), 50);

依赖项

~1.5MB
~36K SLoC