Crate secular[][src]

Expand description

Provide a lowercased diacritics-free version of a character or a string.

For example return e for é.

Secular’s char lookup is an inlined lookup of a static table, which means it’s possible to use it in performance sensitive code.

Secular also performs (optionally) Unicode normalization.


By default, diacritics removal is only done on ascii chars, so to include a smaller table.

If you want to handle the whole BMP, use the “bmp” feature“ (the binary will be bigger to incorporate the whole mapping).

Default import:

 secular = "0.3"

For more characters (the BMP):

secular = { version="0.3", features=["bmp"] }

With Unicode normalization functions (using the unicode-normalization crate):

secular = { version="0.3", features=["normalization"] }


secular = { version="0.3", features=["bmp","normalization"] }

This feature is optional so that you can avoid importing the unicode-normalization crate (note that it’s used in many other crates so it’s possible your text processing application already uses it).


On characters:

use secular::*;
let s = "Comunicações"; // normalized string (length=12)
let chars: Vec<char> = s.chars().collect();
assert_eq!(chars.len(), 12);
assert_eq!(chars[0], 'C');
assert_eq!(lower_lay_char(chars[0]), 'c');
assert_eq!(chars[8], 'ç');
assert_eq!(lower_lay_char(chars[8]), 'c');

On strings:

use secular::*;
let s = "Comunicações"; // unnormalized string (length=14)
assert_eq!(s.chars().count(), 14);
let s = normalized_lower_lay_string(s);
assert_eq!(s.chars().count(), 12);
assert_eq!(s, "comunicacoes");


Return a lowercased diacritics-free version of the character.

Replace every character with its lowercased diacritics-free equivalent whenever possible.