use core::cmp::Ordering;
#[inline]
#[must_use]
pub fn cmp_encoded_key_bytes(a: &[u8], b: &[u8]) -> Ordering {
match a.len().cmp(&b.len()) {
Ordering::Equal => a.cmp(b),
other => other,
}
}
#[inline]
#[must_use]
pub fn is_strictly_increasing_encoded(prev: &[u8], curr: &[u8]) -> bool {
cmp_encoded_key_bytes(prev, curr) == Ordering::Less
}
#[inline]
#[must_use]
#[cfg(feature = "alloc")]
pub fn cmp_text_keys_by_canonical_encoding(a: &str, b: &str) -> Ordering {
let a_len = encoded_text_len(a.len());
let b_len = encoded_text_len(b.len());
match a_len.cmp(&b_len) {
Ordering::Equal => a.as_bytes().cmp(b.as_bytes()),
other => other,
}
}
#[inline]
#[must_use]
#[cfg(feature = "alloc")]
pub const fn encoded_text_len(n: usize) -> usize {
if n < 24 {
1 + n
} else if n <= 0xff {
2 + n
} else if n <= 0xffff {
3 + n
} else if n <= 0xffff_ffff {
5 + n
} else {
9 + n
}
}