use typsy::{anon, anon::Transform, Anon}; #[derive(Transform)] struct Vec3 { pub w: f32, pub x: f32, pub y: f32, pub z: Extra, } #[derive(Transform)] struct Extra { pub value: f32, } #[derive(Transform, Debug, PartialEq)] struct Point { pub y: f32, pub w: f32, pub z: Anon!(value: f32), } #[derive(Transform)] struct TuplePoint(pub f32, pub i32, pub u32); fn convert(vec: Vec3) -> Point { vec.deep_transform() } #[test] fn test() { assert_eq!( convert(Vec3 { w: 0.0, x: 1.0, y: 2.0, z: Extra { value: 3.0 }, }), Point { w: 0.0, z: anon!(value = 3.0), y: 2.0, } ) }