Як перетворити Vec<char>
у форму рядка, щоб я міг її надрукувати?
Як перетворити Vec<char>
у форму рядка, щоб я міг її надрукувати?
Відповіді:
Використання collect()
на ітераторі:
let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);
Оригінальний вектор буде використаний. Якщо вам потрібно його зберегти, використовуйте v.iter()
:
let s: String = v.iter().collect();
Більше прямого шляху немає, оскільки char
це 32-розрядне скалярне значення Unicode, а рядки в Rust - це послідовності байтів ( u8
), що представляють текст у кодуванні UTF-8. Вони не відображають безпосередньо послідовності char
s.
Ось більш читабельна версія, яка споживає вектор:
use std::iter::FromIterator;
fn main() {
let v = vec!['a', 'b', 'c', 'd'];
let s = String::from_iter(v);
// vs
let s: String = v.into_iter().collect();
}
Зверніть увагу, що collect
це реалізовано із викликом FromIterator::from_iter
:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}