rust/tests/ui/lint/unused/must_use-array.rs
2023-01-11 09:32:08 +00:00

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
}