]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/useless_conversion_try.rs
New upstream version 1.75.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / useless_conversion_try.rs
CommitLineData
f20569fa 1#![deny(clippy::useless_conversion)]
ed00b5ec 2#![allow(clippy::needless_if, clippy::unnecessary_fallible_conversions)]
f20569fa 3
f20569fa
XL
4fn test_generic<T: Copy>(val: T) -> T {
5 let _ = T::try_from(val).unwrap();
781aab86 6 //~^ ERROR: useless conversion to the same type: `T`
f20569fa 7 val.try_into().unwrap()
781aab86 8 //~^ ERROR: useless conversion to the same type: `T`
f20569fa
XL
9}
10
11fn test_generic2<T: Copy + Into<i32> + Into<U>, U: From<T>>(val: T) {
12 // ok
13 let _: i32 = val.try_into().unwrap();
14 let _: U = val.try_into().unwrap();
15 let _ = U::try_from(val).unwrap();
16}
17
18fn main() {
19 test_generic(10i32);
20 test_generic2::<i32, i32>(10i32);
21
22 let _: String = "foo".try_into().unwrap();
23 let _: String = TryFrom::try_from("foo").unwrap();
24 let _ = String::try_from("foo").unwrap();
25 #[allow(clippy::useless_conversion)]
26 {
27 let _ = String::try_from("foo").unwrap();
28 let _: String = "foo".try_into().unwrap();
29 }
30 let _: String = "foo".to_string().try_into().unwrap();
781aab86 31 //~^ ERROR: useless conversion to the same type: `std::string::String`
f20569fa 32 let _: String = TryFrom::try_from("foo".to_string()).unwrap();
781aab86 33 //~^ ERROR: useless conversion to the same type: `std::string::String`
f20569fa 34 let _ = String::try_from("foo".to_string()).unwrap();
781aab86 35 //~^ ERROR: useless conversion to the same type: `std::string::String`
f20569fa 36 let _ = String::try_from(format!("A: {:04}", 123)).unwrap();
781aab86 37 //~^ ERROR: useless conversion to the same type: `std::string::String`
f20569fa 38 let _: String = format!("Hello {}", "world").try_into().unwrap();
781aab86 39 //~^ ERROR: useless conversion to the same type: `std::string::String`
f2b60f7d 40 let _: String = String::new().try_into().unwrap();
781aab86 41 //~^ ERROR: useless conversion to the same type: `std::string::String`
f20569fa 42 let _: String = match String::from("_").try_into() {
781aab86 43 //~^ ERROR: useless conversion to the same type: `std::string::String`
f20569fa 44 Ok(a) => a,
f2b60f7d 45 Err(_) => String::new(),
f20569fa
XL
46 };
47 // FIXME this is a false negative
48 #[allow(clippy::cmp_owned)]
49 if String::from("a") == TryInto::<String>::try_into(String::from("a")).unwrap() {}
50}