// check-pass #![feature(type_changing_struct_update)] #![allow(incomplete_features)] use std::borrow::Cow; use std::marker::PhantomData; #[derive(Default)] struct NonGeneric { field1: usize, } #[derive(Default)] struct Generic { field1: T, field2: U, } #[derive(Default)] struct MoreGeneric<'a, const N: usize> { // If only `for [u32; N]: Default`... field1: PhantomData<[u32; N]>, field2: Cow<'a, str>, } fn main() { let default1 = NonGeneric { ..Default::default() }; let default2: Generic = Generic { ..Default::default() }; let default3: MoreGeneric<'static, 12> = MoreGeneric { ..Default::default() }; }