use unicode_width::{UnicodeWidthChar, UnicodeWidthStr};
#[inline]
pub fn char_width(c: char) -> usize {
c.width().unwrap_or(0)
}
#[inline]
pub fn str_width(s: &str) -> usize {
s.width()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn ascii() {
assert_eq!(str_width("Hello"), 5);
assert_eq!(str_width(""), 0);
assert_eq!(char_width('a'), 1);
}
#[test]
fn cjk_and_emoji_are_two_columns() {
assert_eq!(char_width('你'), 2);
assert_eq!(char_width('🚀'), 2);
assert_eq!(str_width("你好"), 4);
assert_eq!(str_width("Hi🚀"), 4);
}
#[test]
fn control_and_zero_width_are_zero() {
assert_eq!(char_width('\0'), 0);
assert_eq!(char_width('\t'), 0);
assert_eq!(char_width('\u{200B}'), 0); }
}