#![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); 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 }