]> git.lizzy.rs Git - rust.git/blob - tests/codegen/slice-windows-no-bounds-check.rs
Rollup merge of #107555 - edward-shen:edward-shen/dup-trait-suggestion, r=compiler...
[rust.git] / tests / codegen / slice-windows-no-bounds-check.rs
1 #![crate_type = "lib"]
2
3 // compile-flags: -O
4
5 use std::slice::Windows;
6
7 // CHECK-LABEL: @naive_string_search
8 #[no_mangle]
9 pub fn naive_string_search(haystack: &str, needle: &str) -> Option<usize> {
10     if needle.is_empty() {
11         return Some(0);
12     }
13     // CHECK-NOT: panic
14     // CHECK-NOT: fail
15     haystack
16         .as_bytes()
17         .windows(needle.len())
18         .position(|sub| sub == needle.as_bytes())
19 }
20
21 // CHECK-LABEL: @next
22 #[no_mangle]
23 pub fn next<'a>(w: &mut Windows<'a, u32>) -> Option<&'a [u32]> {
24     // CHECK-NOT: panic
25     // CHECK-NOT: fail
26     w.next()
27 }
28
29 // CHECK-LABEL: @next_back
30 #[no_mangle]
31 pub fn next_back<'a>(w: &mut Windows<'a, u32>) -> Option<&'a [u32]> {
32     // CHECK-NOT: panic
33     // CHECK-NOT: fail
34     w.next_back()
35 }