pub fn prefix_chars(s: &str, n: usize) -> String {
s.chars().take(n).collect()
}
pub fn preview(s: &str, n: usize) -> String {
let mut prefix = prefix_chars(s, n);
if s.chars().count() > n {
prefix.push_str("...");
}
prefix
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn preview_basic_ascii() {
let s = "hello world";
assert_eq!(preview(s, 5), "hello...");
assert_eq!(preview(s, 20), "hello world");
}
#[test]
fn preview_cjk_characters() {
let s = "宇树科技(Un\u{AD}i\u{AD}t\u{AD}r\u{AD}ee)是“最强”的选手";
let p = preview(s, 10);
assert!(p.chars().count() <= 13);
let manual: String = s.chars().take(10).collect();
if s.chars().count() > 10 {
assert_eq!(p, format!("{}...", manual));
} else {
assert_eq!(p, manual);
}
}
}