use std::ops::Deref; struct Foo; impl Deref for Foo { type Target = [u8]; fn deref(&self) -> &Self::Target { &[] } } fn main() { let _ = "foo" as bool; //~^ ERROR casting `&'static str` as `bool` is invalid [E0606] let _ = String::from("foo") as bool; //~^ ERROR non-primitive cast: `String` as `bool` [E0605] let _ = Foo as bool; //~^ ERROR non-primitive cast: `Foo` as `bool` [E0605] } fn _slice(bar: &[i32]) -> bool { bar as bool //~^ ERROR casting `&[i32]` as `bool` is invalid [E0606] }