| // run-rustfix |
| |
| #![deny(clippy::useless_conversion)] |
| #![allow(clippy::unnecessary_wraps)] |
| |
| fn test_generic<T: Copy>(val: T) -> T { |
| let _ = val; |
| val |
| } |
| |
| fn test_generic2<T: Copy + Into<i32> + Into<U>, U: From<T>>(val: T) { |
| // ok |
| let _: i32 = val.into(); |
| let _: U = val.into(); |
| let _ = U::from(val); |
| } |
| |
| fn test_questionmark() -> Result<(), ()> { |
| { |
| let _: i32 = 0i32; |
| Ok(Ok(())) |
| }??; |
| Ok(()) |
| } |
| |
| fn test_issue_3913() -> Result<(), std::io::Error> { |
| use std::fs; |
| use std::path::Path; |
| |
| let path = Path::new("."); |
| for _ in fs::read_dir(path)? {} |
| |
| Ok(()) |
| } |
| |
| fn test_issue_5833() -> Result<(), ()> { |
| let text = "foo\r\nbar\n\nbaz\n"; |
| let lines = text.lines(); |
| if Some("ok") == lines.into_iter().next() {} |
| |
| Ok(()) |
| } |
| |
| fn main() { |
| test_generic(10i32); |
| test_generic2::<i32, i32>(10i32); |
| test_questionmark().unwrap(); |
| test_issue_3913().unwrap(); |
| test_issue_5833().unwrap(); |
| |
| let _: String = "foo".into(); |
| let _: String = From::from("foo"); |
| let _ = String::from("foo"); |
| #[allow(clippy::useless_conversion)] |
| { |
| let _: String = "foo".into(); |
| let _ = String::from("foo"); |
| let _ = "".lines().into_iter(); |
| } |
| |
| let _: String = "foo".to_string(); |
| let _: String = "foo".to_string(); |
| let _ = "foo".to_string(); |
| let _ = format!("A: {:04}", 123); |
| let _ = "".lines(); |
| let _ = vec![1, 2, 3].into_iter(); |
| let _: String = format!("Hello {}", "world"); |
| |
| // keep parentheses around `a + b` for suggestion (see #4750) |
| let a: i32 = 1; |
| let b: i32 = 1; |
| let _ = (a + b) * 3; |
| |
| // see #7205 |
| let s: Foo<'a'> = Foo; |
| let _: Foo<'b'> = s.into(); |
| let s2: Foo<'a'> = Foo; |
| let _: Foo<'a'> = s2; |
| let s3: Foo<'a'> = Foo; |
| let _ = s3; |
| let s4: Foo<'a'> = Foo; |
| let _ = vec![s4, s4, s4].into_iter(); |
| } |
| |
| #[derive(Copy, Clone)] |
| struct Foo<const C: char>; |
| |
| impl From<Foo<'a'>> for Foo<'b'> { |
| fn from(_s: Foo<'a'>) -> Self { |
| Foo |
| } |
| } |