#![allow(dead_code)]
use std::marker::PhantomData;
use struct_reflection::StructReflection;
use struct_reflection::StructReflectionHelper;
#[derive(StructReflection)]
struct MultiGeneric<T, U, V> {
first_data: T,
second_data: U,
third_data: V,
t_array: [T; 2],
u_array: [U; 3],
mixed_array: [(T, U); 2], _phantom: PhantomData<(T, U, V)>,
}
#[derive(StructReflection)]
struct NestedGenerics<T, U> {
outer_data: T,
inner: MultiGeneric<U, String, bool>,
counts: [u32; 4],
}
fn main() {
println!("MultiGeneric reflection:");
let multi_fields = MultiGeneric::<i32, String, bool>::struct_reflection().unwrap();
for field in multi_fields {
println!(" {}", field);
}
println!("\nNestedGenerics reflection:");
let nested_fields = NestedGenerics::<f64, char>::struct_reflection().unwrap();
for field in nested_fields {
println!(" {}", field);
}
}