| #![deny(unused_must_use)] |
| |
| #[must_use] |
| struct S; |
| |
| struct A; |
| |
| #[must_use] |
| trait T {} |
| |
| impl T for A {} |
| |
| fn empty() -> [S; 0] { |
| [] |
| } |
| |
| fn singleton() -> [S; 1] { |
| [S] |
| } |
| |
| fn many() -> [S; 4] { |
| [S, S, S, S] |
| } |
| |
| fn array_of_impl_trait() -> [impl T; 2] { |
| [A, A] |
| } |
| |
| fn impl_array() -> [(u8, Box<dyn T>); 2] { |
| [(0, Box::new(A)), (0, Box::new(A))] |
| } |
| |
| fn array_of_arrays_of_arrays() -> [[[S; 1]; 2]; 1] { |
| [[[S], [S]]] |
| } |
| |
| fn main() { |
| empty(); // ok |
| singleton(); //~ ERROR unused array of `S` that must be used |
| many(); //~ ERROR unused array of `S` that must be used |
| ([S], 0, ()); //~ ERROR unused array of `S` in tuple element 0 that must be used |
| array_of_impl_trait(); //~ ERROR unused array of implementers of `T` that must be used |
| impl_array(); |
| //~^ ERROR unused array of boxed `T` trait objects in tuple element 1 that must be used |
| array_of_arrays_of_arrays(); |
| //~^ ERROR unused array of arrays of arrays of `S` that must be used |
| } |