55 lines
1.1 KiB
Rust
55 lines
1.1 KiB
Rust
#![deny(unused_must_use)]
|
|
|
|
#[must_use]
|
|
#[derive(Clone, Copy)]
|
|
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 usize_max() -> [S; usize::MAX] {
|
|
[S; usize::MAX]
|
|
}
|
|
|
|
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
|
|
usize_max();
|
|
//~^ ERROR unused array of `S` that must be used
|
|
}
|