Make sure you read and understand delnan point :
. , char ( ) , ?
, char, .
, , Rust Unicode
; Rust UTF-8. UTF-8 . O(1) "6 " "N ", .
char_indices :
fn truncate(s: &str, max_chars: usize) -> &str {
match s.char_indices().nth(max_chars) {
None => s,
Some((idx, _)) => &s[..idx],
}
}
fn main() {
assert_eq!(truncate("ボルテックス", 0), "");
assert_eq!(truncate("ボルテックス", 4), "ボルテッ");
assert_eq!(truncate("ボルテックス", 100), "ボルテックス");
assert_eq!(truncate("hello", 4), "hell");
}
, , , String :
fn truncate_in_place(s: &mut String, max_chars: usize) {
let bytes = truncate(&s, max_chars).len();
s.truncate(bytes);
}
fn main() {
let mut s = "ボルテックス".to_string();
truncate_in_place(&mut s, 0);
assert_eq!(s, "");
}