1 // run-rustfix
2 
3 #![allow(unused_imports, dead_code)]
4 #![deny(clippy::default_trait_access)]
5 
6 use std::default;
7 use std::default::Default as D2;
8 use std::string;
9 
main()10 fn main() {
11     let s1: String = Default::default();
12 
13     let s2 = String::default();
14 
15     let s3: String = D2::default();
16 
17     let s4: String = std::default::Default::default();
18 
19     let s5 = string::String::default();
20 
21     let s6: String = default::Default::default();
22 
23     let s7 = std::string::String::default();
24 
25     let s8: String = DefaultFactory::make_t_badly();
26 
27     let s9: String = DefaultFactory::make_t_nicely();
28 
29     let s10 = DerivedDefault::default();
30 
31     let s11: GenericDerivedDefault<String> = Default::default();
32 
33     let s12 = GenericDerivedDefault::<String>::default();
34 
35     let s13 = TupleDerivedDefault::default();
36 
37     let s14: TupleDerivedDefault = Default::default();
38 
39     let s15: ArrayDerivedDefault = Default::default();
40 
41     let s16 = ArrayDerivedDefault::default();
42 
43     let s17: TupleStructDerivedDefault = Default::default();
44 
45     let s18 = TupleStructDerivedDefault::default();
46 
47     let s19 = <DerivedDefault as Default>::default();
48 
49     println!(
50         "[{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}], [{:?}]",
51         s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19,
52     );
53 }
54 
55 struct DefaultFactory;
56 
57 impl DefaultFactory {
make_t_badly<T: Default>() -> T58     pub fn make_t_badly<T: Default>() -> T {
59         Default::default()
60     }
61 
make_t_nicely<T: Default>() -> T62     pub fn make_t_nicely<T: Default>() -> T {
63         T::default()
64     }
65 }
66 
67 #[derive(Debug, Default)]
68 struct DerivedDefault {
69     pub s: String,
70 }
71 
72 #[derive(Debug, Default)]
73 struct GenericDerivedDefault<T: Default + std::fmt::Debug> {
74     pub s: T,
75 }
76 
77 #[derive(Debug, Default)]
78 struct TupleDerivedDefault {
79     pub s: (String, String),
80 }
81 
82 #[derive(Debug, Default)]
83 struct ArrayDerivedDefault {
84     pub s: [String; 10],
85 }
86 
87 #[derive(Debug, Default)]
88 struct TupleStructDerivedDefault(String);
89