6次发布
使用旧的Rust 2015
0.3.0 | 2017年11月23日 |
---|---|
0.2.0 | 2017年9月25日 |
0.1.3 | 2017年6月24日 |
0.1.2 | 2016年12月20日 |
#6 in #展开
64 次每月下载
在 3 crates 中使用
7KB
90 行
typenum_loops
一个库,提供在编译时完全或部分展开的循环。
extern crate typenum;
extern crate typenum_loops;
use typenum::{U4, U6};
use typenum_loops::Loop;
fn main(){
let arr: &mut[usize] = &mut[0; 4];
// for i in 0..4 {arr[i] = i} fully unrolled by 4
U4::full_unroll(&mut |i| arr[i] = i);
let arr2: &mut[usize] = &mut[0; 13];
// for i in 0..13 {arr2[i] = i} unrolled by 6
U6::partial_unroll(13, &mut |i, _| arr2[i] = i);
}
注意:尽管尝试通过使用空的包装函数来欺骗 llvm,但非常大的闭包可能不会内联。
许可证
MIT
lib.rs
:
#示例
extern crate typenum;
extern crate typenum_loops;
use typenum::{U4, U6};
use typenum_loops::Loop;
fn main(){
let arr: &mut[usize] = &mut[0; 4];
// for i in 0..4 {arr[i] = i} fully unrolled by 4
U4::full_unroll(&mut |i| arr[i] = i);
let arr2: &mut[usize] = &mut[0; 13];
// for i in 0..13 {arr2[i] = i} unrolled by 6
U6::partial_unroll(13, &mut |i, _| arr2[i] = i);
}
依赖项
~155KB