pub fn unicode_case_eq<T, U>(
interner: &T,
left: U,
right: U,
fold: CaseFold,
) -> Result<Option<bool>, T::Error>
Expand description
Compare the byte contents of two symbols using Unicode case-folding comparison for equality.
The byte slice associated with each symbol is resolved via the given
interner. Unresolved symbols are compared as if they resolve to &[]
.
This comparison function attempts to convert each symbol’s byte content to a
UTF-8 str
. If both symbols resolve to UTF-8 contents, Unicode
case folding is used when comparing the contents and this function returns
Ok(Some(bool))
. If neither symbol resolves to UTF-8 contents, this
function falls back to ascii_casecmp
and returns Ok(Some(bool))
.
Otherwise, the two symbols have byte contents with different encodings and
Ok(None)
is returned.
This function can be used to implement Symbol#casecmp?
for the
Symbol
type defined in Ruby Core.
§Errors
If the interner returns an error while retrieving a symbol, that error is
returned. See Intern::lookup_symbol
.