#array #struct #iterator #derive

macro struct_as_array2

A Rust library that allows you to represent the structure as an array. Ported from https://github.com/Nikitamuraviev10/struct_as_array.git to proc_macro2, syn 2.0 and quote 1.0

2 releases

Uses new Rust 2024

0.3.1 Mar 7, 2025
0.3.0 Mar 6, 2025

#404 in Procedural macros

Download history 265/week @ 2025-03-05

265 downloads per month

MIT license

10KB
58 lines

A Rust library that allows you to represent the structure as an array.
Library works only with named structs whose fields have the same type.

Examples

Basic usage:

use struct_as_array2::*;                                                                     
                                                                                            
#[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]);

Using as an iterator:

use struct_as_array2::*;                                                                     
                                                                                            
#[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);                                                                      
}                                                                                           

Dependencies

~205–640KB
~15K SLoC