#[cfg_attr(feature = "fmt", doc = "```rust")]
#[cfg_attr(not(feature = "fmt"), doc = "```ignore")]
pub const fn str_eq(left: &str, right: &str) -> bool {
u8_slice_eq(left.as_bytes(), right.as_bytes())
}
#[cfg_attr(feature = "fmt", doc = "```rust")]
#[cfg_attr(not(feature = "fmt"), doc = "```ignore")]
pub const fn u8_slice_eq(left: &[u8], right: &[u8]) -> bool {
if left.len() != right.len() {
return false;
}
let mut i = 0;
while i != left.len() {
if left[i] != right[i] {
return false;
}
i += 1;
}
true
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn slice_eq_test() {
assert!(u8_slice_eq(&[], &[]));
assert!(!u8_slice_eq(&[], &[0]));
assert!(!u8_slice_eq(&[0], &[]));
assert!(u8_slice_eq(&[0], &[0]));
assert!(!u8_slice_eq(&[0], &[1]));
assert!(!u8_slice_eq(&[1], &[0]));
assert!(!u8_slice_eq(&[0], &[0, 1]));
assert!(!u8_slice_eq(&[0, 1], &[0]));
assert!(u8_slice_eq(&[0, 1], &[0, 1]));
assert!(!u8_slice_eq(&[0, 1], &[0, 2]));
}
#[test]
fn str_eq_test() {
assert!(str_eq("", ""));
assert!(!str_eq("", "0"));
assert!(!str_eq("0", ""));
assert!(str_eq("0", "0"));
assert!(!str_eq("0", "1"));
assert!(!str_eq("1", "0"));
assert!(!str_eq("0", "0, 1"));
assert!(!str_eq("0, 1", "0"));
assert!(!str_eq("0, 1", "1"));
assert!(str_eq("0, 1", "0, 1"));
assert!(!str_eq("0, 1", "0, 2"));
}
}