//@run-rustfix //@aux-build: proc_macros.rs:proc-macro #![deny(clippy::default_trait_access)] #![allow(dead_code, unused_imports)] #![allow(clippy::uninlined_format_args)] extern crate proc_macros; use proc_macros::with_span; use std::default::Default as D2; use std::{default, string}; fn main() { let s1: String = String::default(); let s2 = String::default(); let s3: String = String::default(); let s4: String = String::default(); let s5 = string::String::default(); let s6: String = String::default(); let s7 = std::string::String::default(); let s8: String = DefaultFactory::make_t_badly(); let s9: String = DefaultFactory::make_t_nicely(); let s10 = DerivedDefault::default(); let s11: GenericDerivedDefault = GenericDerivedDefault::default(); let s12 = GenericDerivedDefault::::default(); let s13 = TupleDerivedDefault::default(); let s14: TupleDerivedDefault = TupleDerivedDefault::default(); let s15: ArrayDerivedDefault = ArrayDerivedDefault::default(); let s16 = ArrayDerivedDefault::default(); let s17: TupleStructDerivedDefault = TupleStructDerivedDefault::default(); let s18 = TupleStructDerivedDefault::default(); let s19 = ::default(); let s20 = UpdateSyntax { s: "foo", ..Default::default() }; let _s21: String = with_span!(s Default::default()); println!( "[{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}]", s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, ); } struct DefaultFactory; impl DefaultFactory { pub fn make_t_badly() -> T { Default::default() } pub fn make_t_nicely() -> T { T::default() } } #[derive(Debug, Default)] struct DerivedDefault { pub s: String, } #[derive(Debug, Default)] struct GenericDerivedDefault { pub s: T, } #[derive(Debug, Default)] struct TupleDerivedDefault { pub s: (String, String), } #[derive(Debug, Default)] struct ArrayDerivedDefault { pub s: [String; 10], } #[derive(Debug, Default)] struct TupleStructDerivedDefault(String); #[derive(Debug, Default)] struct UpdateSyntax { pub s: &'static str, pub u: u64, }