1 // run-rustfix
2 
3 #![feature(custom_inner_attributes)]
4 #![warn(clippy::manual_split_once)]
5 #![allow(clippy::iter_skip_next, clippy::iter_nth_zero)]
6 
7 extern crate itertools;
8 
9 #[allow(unused_imports)]
10 use itertools::Itertools;
11 
main()12 fn main() {
13     let _ = "key=value".splitn(2, '=').next();
14     let _ = "key=value".splitn(2, '=').nth(2);
15     let _ = "key=value".splitn(2, '=').next().unwrap();
16     let _ = "key=value".splitn(2, '=').nth(0).unwrap();
17     let _ = "key=value".splitn(2, '=').nth(1).unwrap();
18     let _ = "key=value".splitn(2, '=').skip(1).next().unwrap();
19     let (_, _) = "key=value".splitn(2, '=').next_tuple().unwrap();
20 
21     let s = String::from("key=value");
22     let _ = s.splitn(2, '=').next().unwrap();
23 
24     let s = Box::<str>::from("key=value");
25     let _ = s.splitn(2, '=').nth(0).unwrap();
26 
27     let s = &"key=value";
28     let _ = s.splitn(2, '=').skip(0).next().unwrap();
29 
30     fn _f(s: &str) -> Option<&str> {
31         let _ = s.splitn(2, "key=value").next()?;
32         let _ = s.splitn(2, "key=value").nth(1)?;
33         let _ = s.splitn(2, "key=value").skip(1).next()?;
34         None
35     }
36 
37     // Don't lint, slices don't have `split_once`
38     let _ = [0, 1, 2].splitn(2, |&x| x == 1).nth(1).unwrap();
39 
40     // `rsplitn` gives the results in the reverse order of `rsplit_once`
41     let _ = "key=value".rsplitn(2, '=').next().unwrap();
42     let _ = "key=value".rsplitn(2, '=').nth(1).unwrap();
43     let _ = "key=value".rsplitn(2, '=').nth(0);
44     let (_, _) = "key=value".rsplitn(2, '=').next_tuple().unwrap();
45 }
46 
_msrv_1_51()47 fn _msrv_1_51() {
48     #![clippy::msrv = "1.51"]
49     // `str::split_once` was stabilized in 1.16. Do not lint this
50     let _ = "key=value".splitn(2, '=').nth(1).unwrap();
51 }
52 
_msrv_1_52()53 fn _msrv_1_52() {
54     #![clippy::msrv = "1.52"]
55     let _ = "key=value".splitn(2, '=').nth(1).unwrap();
56 }
57