40 lines
1.0 KiB
Rust
40 lines
1.0 KiB
Rust
#![deny(unused_must_use)]
|
|
|
|
#[must_use]
|
|
trait Critical {}
|
|
|
|
trait NotSoCritical {}
|
|
|
|
trait DecidedlyUnimportant {}
|
|
|
|
struct Anon;
|
|
|
|
impl Critical for Anon {}
|
|
impl NotSoCritical for Anon {}
|
|
impl DecidedlyUnimportant for Anon {}
|
|
|
|
fn get_critical() -> impl NotSoCritical + Critical + DecidedlyUnimportant {
|
|
Anon {}
|
|
}
|
|
|
|
fn get_boxed_critical() -> Box<dyn Critical> {
|
|
Box::new(Anon {})
|
|
}
|
|
|
|
fn get_nested_boxed_critical() -> Box<Box<dyn Critical>> {
|
|
Box::new(Box::new(Anon {}))
|
|
}
|
|
|
|
fn get_critical_tuple() -> (u32, Box<dyn Critical>, impl Critical, ()) {
|
|
(0, get_boxed_critical(), get_critical(), ())
|
|
}
|
|
|
|
fn main() {
|
|
get_critical(); //~ ERROR unused implementer of `Critical` that must be used
|
|
get_boxed_critical(); //~ ERROR unused boxed `Critical` trait object that must be used
|
|
get_nested_boxed_critical();
|
|
//~^ ERROR unused boxed boxed `Critical` trait object that must be used
|
|
get_critical_tuple(); //~ ERROR unused boxed `Critical` trait object in tuple element 1
|
|
//~^ ERROR unused implementer of `Critical` in tuple element 2
|
|
}
|