error[E0423]: expected function, tuple struct or tuple variant, found struct `std::collections::HashMap`
  --> $DIR/suggest-box-new.rs:14:13
   |
LL |     let _ = std::collections::HashMap();
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  --> $SRC_DIR/std/src/collections/hash/map.rs:LL:COL
   |
   = note: `std::collections::HashMap` defined here
   |
help: you might have meant to use an associated function to build this type
   |
LL |     let _ = std::collections::HashMap::new();
   |                                      ~~~~~~~
LL |     let _ = std::collections::HashMap::with_capacity(_);
   |                                      ~~~~~~~~~~~~~~~~~~
LL |     let _ = std::collections::HashMap::with_hasher(_);
   |                                      ~~~~~~~~~~~~~~~~
LL |     let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
   |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
help: consider using the `Default` trait
   |
LL |     let _ = <std::collections::HashMap as std::default::Default>::default();
   |             +                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error[E0423]: cannot initialize a tuple struct which contains private fields
  --> $DIR/suggest-box-new.rs:8:19
   |
LL |         wtf: Some(Box(U {
   |                   ^^^
   |
note: constructor is not visible here due to private fields
  --> $SRC_DIR/alloc/src/boxed.rs:LL:COL
   |
   = note: private field
   |
   = note: private field
help: you might have meant to use an associated function to build this type
   |
LL |         wtf: Some(Box::new(_)),
   |                      ~~~~~~~~
LL |         wtf: Some(Box::new_uninit()),
   |                      ~~~~~~~~~~~~~~
LL |         wtf: Some(Box::new_zeroed()),
   |                      ~~~~~~~~~~~~~~
LL |         wtf: Some(Box::new_in(_, _)),
   |                      ~~~~~~~~~~~~~~
     and 12 other candidates
help: consider using the `Default` trait
   |
LL |         wtf: Some(<Box as std::default::Default>::default()),
   |                   +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: cannot construct `HashMap<_, _, _>` with struct literal syntax due to private fields
  --> $DIR/suggest-box-new.rs:16:13
   |
LL |     let _ = std::collections::HashMap {};
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: private field `base` that was not provided
help: you might have meant to use an associated function to build this type
   |
LL |     let _ = std::collections::HashMap::new();
   |                                      ~~~~~~~
LL |     let _ = std::collections::HashMap::with_capacity(_);
   |                                      ~~~~~~~~~~~~~~~~~~
LL |     let _ = std::collections::HashMap::with_hasher(_);
   |                                      ~~~~~~~~~~~~~~~~
LL |     let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
   |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
help: consider using the `Default` trait
   |
LL |     let _ = <std::collections::HashMap as std::default::Default>::default();
   |             +                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: cannot construct `Box<_, _>` with struct literal syntax due to private fields
  --> $DIR/suggest-box-new.rs:18:13
   |
LL |     let _ = Box {};
   |             ^^^
   |
   = note: private fields `0` and `1` that were not provided
help: you might have meant to use an associated function to build this type
   |
LL |     let _ = Box::new(_);
   |                ~~~~~~~~
LL |     let _ = Box::new_uninit();
   |                ~~~~~~~~~~~~~~
LL |     let _ = Box::new_zeroed();
   |                ~~~~~~~~~~~~~~
LL |     let _ = Box::new_in(_, _);
   |                ~~~~~~~~~~~~~~
     and 12 other candidates
help: consider using the `Default` trait
   |
LL |     let _ = <Box as std::default::Default>::default();
   |             +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0423`.
