#array #struct #iterator #derive #proc-macro

无标准库 struct_as_array

一个允许您将结构体表示为数组的Rust库。

3个不稳定版本

0.2.0 2023年11月13日
0.1.1 2023年11月13日
0.1.0 2023年11月13日

#383 in 无标准库

36 每月下载量

MIT 许可证

10KB
62 代码行

一个允许您将结构体表示为数组的Rust库。
库仅与具有相同类型字段的命名结构体一起工作。

示例

基本使用

use struct_as_array::*;                                                                     
                                                                                            
#[derive(AsArray)]                                                                          
struct TestStruct {                                                                         
    t1: i32,                                                                                
    t2: i32,                                                                                
    t3: i32,                                                                                
}                                                                                           
                                                                                            
let t = TestStruct {                                                                        
    t1: 0,                                                                                  
    t2: 1,                                                                                  
    t3: 2,                                                                                  
};                                                                                          
                                                                                            
// Represent as array of reference
assert_eq!(t.as_array(), [&0, &1, &2]);

// Convert struct to array
assert_eq!(t.to_array(), [0, 1, 2]);

作为迭代器的使用

use struct_as_array::*;                                                                     
                                                                                            
#[derive(AsArray)]                                                                          
struct TestStruct {                                                                         
    t1: i32,                                                                                
    t2: i32,                                                                                
    t3: i32,                                                                                
}                                                                                           
                                                                                            
let t = TestStruct {                                                                        
    t1: 0,                                                                                  
    t2: 1,                                                                                  
    t3: 2,                                                                                  
};                                                                                          
                                                                                            
for i in t.as_array() {                                                                     
    println!("{}", i);                                                                      
}                                                                                           

依赖

~1.5MB
~41K SLoC