Rust · Comparison and Equality

Comparison and Equality

use stringzilla::*; 6.0.0-rc.1 · 91a27bdd

order and equal are SIMD byte comparisons, while utf8_uncased_order compares under Unicode case folding.

pub fn order<A: AsRef<[u8]>, B: AsRef<[u8]>>(a: A, b: B) -> core::cmp::Ordering; // SIMD sz_order_best
pub fn equal<A: AsRef<[u8]>, B: AsRef<[u8]>>(a: A, b: B) -> bool;               // SIMD sz_equal_best
pub fn utf8_uncased_order<A, B>(a: A, b: B) -> core::cmp::Ordering;             // Unicode case-folded
use stringzilla as sz;
use std::cmp::Ordering;

assert_eq!(sz::order("apple", "banana"), Ordering::Less);
assert!(sz::equal("abc", "abc"));
assert_eq!(sz::utf8_uncased_order("Hello", "HELLO"), Ordering::Equal);

API

Functions

orderLexicographic byte-order comparison of two strings, SIMD-accelerated.
compare.rs:25 ↗
pub fn order<First, Second>(first: First, second: Second) -> Ordering
where
    First: AsRef<[u8]>,
    Second: AsRef<[u8]>,

Mirrors Ord on &[u8] but uses StringZilla's vectorized sz_order_best.

Examples

use std::cmp::Ordering;
use stringzilla as sz;

assert_eq!(sz::order("apple", "banana"), Ordering::Less);
assert_eq!(sz::order("abc", "abc"), Ordering::Equal);
equalByte-level equality of two strings, SIMD-accelerated via sz_equal_best.
compare.rs:62 ↗
pub fn equal<First, Second>(first: First, second: Second) -> bool
where
    First: AsRef<[u8]>,
    Second: AsRef<[u8]>,

Examples

use stringzilla as sz;

assert!(sz::equal("abc", "abc"));
assert!(!sz::equal("abc", "abd"));