#![allow(dead_code)] extern crate defmt as defmt2; fn main() { let baz: Baz = Default::default(); defmt::info!("{}", baz); } trait Foo { type Bar; } #[derive(defmt::Format, Default)] struct Baz { field: T::Bar, field2: Quux, } #[derive(defmt::Format, Default)] struct Qux; impl Foo for Qux { type Bar = Qux; } #[allow(dead_code)] #[derive(defmt::Format, Default)] enum Quux { #[default] None, Variant1(T), Variant2 { f: T::Bar, }, Variant3(T::Bar), } #[allow(dead_code)] #[derive(defmt::Format)] #[defmt(crate = defmt2)] struct Quz; #[derive(defmt::Format)] #[defmt(transparent)] #[allow(dead_code)] enum TransparentEnum { Quz(Quz), Quux(Quux), Baz(Baz), U16(u16), } #[derive(defmt::Format)] #[defmt(transparent)] #[allow(dead_code)] struct Transparent(Quux); #[derive(defmt::Format)] #[defmt(transparent)] #[defmt(transparent, crate = defmt4)] #[defmt(crate = defmt3, crate = defmt2)] #[allow(dead_code)] struct Variations(Quux); struct Flavor; trait FlavorT { type List<'a, T: 'a + ::defmt::Format>: ::defmt::Format; } impl FlavorT for Flavor { type List<'a, T: 'a + ::defmt::Format> = &'a [T]; } #[derive(defmt::Format)] #[defmt(bound())] // fixes the compile error from `ui/derive_bound_overflow.rs` enum Flavored { Str(F::List<'static, Self>), } const _: () = { const fn implements_format() {} implements_format::>(); };