]> git.lizzy.rs Git - rust.git/blob - src/test/ui/consts/const-eval/strlen.rs
Rollup merge of #83634 - JohnTitor:proc-macro-ice, r=varkor
[rust.git] / src / test / ui / consts / const-eval / strlen.rs
1 // run-pass
2
3 const S: &str = "foo";
4 pub const B: &[u8] = S.as_bytes();
5 pub const C: usize = B.len();
6 pub const D: bool = B.is_empty();
7 pub const E: bool = S.is_empty();
8 pub const F: usize = S.len();
9
10 pub fn foo() -> [u8; S.len()] {
11     let mut buf = [0; S.len()];
12     for (i, &c) in S.as_bytes().iter().enumerate() {
13         buf[i] = c;
14     }
15     buf
16 }
17
18 fn main() {
19     assert_eq!(&foo()[..], b"foo");
20     assert_eq!(foo().len(), S.len());
21     const LEN: usize = S.len();
22     assert_eq!(LEN, S.len());
23     assert_eq!(B, foo());
24     assert_eq!(B, b"foo");
25     assert_eq!(C, 3);
26     assert_eq!(F, 3);
27     assert!(!D);
28     assert!(!E);
29     const EMPTY: bool = "".is_empty();
30     assert!(EMPTY);
31 }