]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/manual_strip.rs
New upstream version 1.52.1+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / manual_strip.rs
CommitLineData
f20569fa
XL
1#![warn(clippy::manual_strip)]
2
3fn 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}