]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/manual_strip.rs
Auto merge of #97944 - nikic:freebsd-update, r=Mark-Simulacrum
[rust.git] / src / tools / clippy / tests / ui / manual_strip.rs
1 #![warn(clippy::manual_strip)]
2
3 fn main() {
4     let s = "abc";
5
6     if s.starts_with("ab") {
7         str::to_string(&s["ab".len()..]);
8         s["ab".len()..].to_string();
9
10         str::to_string(&s[2..]);
11         s[2..].to_string();
12     }
13
14     if s.ends_with("bc") {
15         str::to_string(&s[..s.len() - "bc".len()]);
16         s[..s.len() - "bc".len()].to_string();
17
18         str::to_string(&s[..s.len() - 2]);
19         s[..s.len() - 2].to_string();
20     }
21
22     // Character patterns
23     if s.starts_with('a') {
24         str::to_string(&s[1..]);
25         s[1..].to_string();
26     }
27
28     // Variable prefix
29     let prefix = "ab";
30     if s.starts_with(prefix) {
31         str::to_string(&s[prefix.len()..]);
32     }
33
34     // Constant prefix
35     const PREFIX: &str = "ab";
36     if s.starts_with(PREFIX) {
37         str::to_string(&s[PREFIX.len()..]);
38         str::to_string(&s[2..]);
39     }
40
41     // Constant target
42     const TARGET: &str = "abc";
43     if TARGET.starts_with(prefix) {
44         str::to_string(&TARGET[prefix.len()..]);
45     }
46
47     // String target - not mutated.
48     let s1: String = "abc".into();
49     if s1.starts_with("ab") {
50         s1[2..].to_uppercase();
51     }
52
53     // String target - mutated. (Don't lint.)
54     let mut s2: String = "abc".into();
55     if s2.starts_with("ab") {
56         s2.push('d');
57         s2[2..].to_uppercase();
58     }
59
60     // Target not stripped. (Don't lint.)
61     let s3 = String::from("abcd");
62     let s4 = String::from("efgh");
63     if s3.starts_with("ab") {
64         s4[2..].to_string();
65     }
66 }