use string_width::{
AmbiguousWidthTreatment, StringWidthOptions, string_width, string_width_with_options,
};
fn main() {
println!("=== Basic String Width Examples ===\n");
let text = "Hello, World!";
println!("Text: '{}'", text);
println!("Width: {}\n", string_width(text));
let text = "你好世界";
println!("Text: '{}'", text);
println!("Width: {}\n", string_width(text));
let text = "Hello 世界!";
println!("Text: '{}'", text);
println!("Width: {}\n", string_width(text));
let text = "Hello 👋 World 🌍";
println!("Text: '{}'", text);
println!("Width: {}\n", string_width(text));
let text = "Family: 👨👩👧👦";
println!("Text: '{}'", text);
println!("Width: {}\n", string_width(text));
let text = "Numbers: 1️⃣ 2️⃣ 3️⃣";
println!("Text: '{}'", text);
println!("Width: {}\n", string_width(text));
let text = "Flags: 🇺🇸 🇯🇵 🇬🇧";
println!("Text: '{}'", text);
println!("Width: {}\n", string_width(text));
let text = "\x1b[31mRed text\x1b[0m";
println!("Text with ANSI: '{}'", text);
println!("Width (ANSI stripped): {}", string_width(text));
let options = StringWidthOptions {
count_ansi: true,
ambiguous_width: AmbiguousWidthTreatment::Narrow,
};
println!(
"Width (ANSI counted): {}\n",
string_width_with_options(text, options)
);
let text = "±×÷";
println!("Text: '{}'", text);
println!("Width (narrow): {}", string_width(text));
let options = StringWidthOptions {
count_ansi: false,
ambiguous_width: AmbiguousWidthTreatment::Wide,
};
println!(
"Width (wide): {}\n",
string_width_with_options(text, options)
);
let text = "a\u{200B}b\u{200C}c";
println!("Text with zero-width chars: 'a\\u{{200B}}b\\u{{200C}}c'");
println!("Width: {}\n", string_width(text));
let text = "e\u{0301}"; println!("Text with combining: 'e\\u{{0301}}'");
println!("Width: {}\n", string_width(text));
}