Мне не удалось найти в Rust эквивалент оператора "соединения" над вектором String
s. У меня есть Vec<String>
, и я хочу присоединиться к ним как один String
:
let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = something::join(string_list,"-");
assert_eq!("Foo-Bar", joined);
Связанный:
189
Davide Aversa
4 Фев 2015 в 04:19
3 ответа
Лучший ответ
В Rust 1.3.0 и более поздних версиях join
a> доступен:
fn main() {
let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = string_list.join("-");
assert_eq!("Foo-Bar", joined);
}
До версии 1.3.0 этот метод назывался connect
а>:
let joined = string_list.connect("-");
Обратите внимание, что вам не нужно ничего импортировать, так как методы автоматически импортируются стандартной библиотекой прелюдия.
189
Emma
2 Июл 2020 в 02:57
В ящике itertools
есть функция, также называемая join
, который присоединяется к итератору:
extern crate itertools; // 0.7.8
use itertools::free::join;
use std::fmt;
pub struct MyScores {
scores: Vec<i16>,
}
impl fmt::Display for MyScores {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.write_str("MyScores(")?;
fmt.write_str(&join(&self.scores[..], &","))?;
fmt.write_str(")")?;
Ok(())
}
}
fn main() {
let my_scores = MyScores {
scores: vec![12, 23, 34, 45],
};
println!("{}", my_scores); // outputs MyScores(12,23,34,45)
}
11
Shepmaster
5 Июл 2018 в 13:08
Как упоминал Уилфред, SliceConcatExt::connect
устарело с версии 1.3.0 в пользу { {X1}}:
let joined = string_list.join("-");
25
Shepmaster
12 Июн 2017 в 13:41
Похожие вопросы
Связанные вопросы
Новые вопросы
string
Строка - это конечная последовательность символов, обычно используемая для текста, хотя иногда для произвольных данных.