//@ edition: 2021 //@ run-pass #![feature(derive_from)] use core::from::From; #[derive(From)] struct TupleSimple(u32); #[derive(From)] struct TupleNonPathType([u32; 4]); #[derive(From)] struct TupleWithRef<'a, T>(&'a T); #[derive(From)] struct TupleSWithBound(T); #[derive(From)] struct RawIdentifier { r#use: u32, } #[derive(From)] struct Field { foo: bool, } #[derive(From)] struct Const { foo: [u32; C], } fn main() { let a = 42u32; let b: [u32; 4] = [0, 1, 2, 3]; let c = true; let s1: TupleSimple = a.into(); assert_eq!(s1.0, a); let s2: TupleNonPathType = b.into(); assert_eq!(s2.0, b); let s3: TupleWithRef = (&a).into(); assert_eq!(s3.0, &a); let s4: TupleSWithBound = a.into(); assert_eq!(s4.0, a); let s5: RawIdentifier = a.into(); assert_eq!(s5.r#use, a); let s6: Field = c.into(); assert_eq!(s6.foo, c); let s7: Const<4> = b.into(); assert_eq!(s7.foo, b); }