summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/manual_split_once.fixed
blob: d5113df569a086c4b99b514bb59e9f0f461b3865 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// run-rustfix

#![feature(custom_inner_attributes)]
#![warn(clippy::manual_split_once)]
#![allow(clippy::iter_skip_next, clippy::iter_nth_zero, clippy::needless_splitn)]

extern crate itertools;

#[allow(unused_imports)]
use itertools::Itertools;

fn main() {
    let _ = Some("key=value".split_once('=').map_or("key=value", |x| x.0));
    let _ = "key=value".splitn(2, '=').nth(2);
    let _ = "key=value".split_once('=').map_or("key=value", |x| x.0);
    let _ = "key=value".split_once('=').map_or("key=value", |x| x.0);
    let _ = "key=value".split_once('=').unwrap().1;
    let _ = "key=value".split_once('=').unwrap().1;
    let (_, _) = "key=value".split_once('=').unwrap();

    let s = String::from("key=value");
    let _ = s.split_once('=').map_or(&*s, |x| x.0);

    let s = Box::<str>::from("key=value");
    let _ = s.split_once('=').map_or(&*s, |x| x.0);

    let s = &"key=value";
    let _ = s.split_once('=').map_or(*s, |x| x.0);

    fn _f(s: &str) -> Option<&str> {
        let _ = s.split_once("key=value").map_or(s, |x| x.0);
        let _ = s.split_once("key=value")?.1;
        let _ = s.split_once("key=value")?.1;
        None
    }

    // Don't lint, slices don't have `split_once`
    let _ = [0, 1, 2].splitn(2, |&x| x == 1).nth(1).unwrap();

    // `rsplitn` gives the results in the reverse order of `rsplit_once`
    let _ = "key=value".rsplitn(2, '=').next().unwrap();
    let _ = "key=value".rsplit_once('=').unwrap().0;
    let _ = "key=value".rsplit_once('=').map(|x| x.1);
    let (_, _) = "key=value".rsplit_once('=').map(|(x, y)| (y, x)).unwrap();
}

fn _msrv_1_51() {
    #![clippy::msrv = "1.51"]
    // `str::split_once` was stabilized in 1.16. Do not lint this
    let _ = "key=value".splitn(2, '=').nth(1).unwrap();
}

fn _msrv_1_52() {
    #![clippy::msrv = "1.52"]
    let _ = "key=value".split_once('=').unwrap().1;
}