String
s 의 벡터를 통해 "join"연산자에 해당하는 Rust를 찾을 수 없었습니다 . 나는 하나가 있고 Vec<String>
그들과 함께하고 싶습니다 String
:
let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = something::join(string_list,"-");
assert_eq!("Foo-Bar", joined);
관련 :
String
s 의 벡터를 통해 "join"연산자에 해당하는 Rust를 찾을 수 없었습니다 . 나는 하나가 있고 Vec<String>
그들과 함께하고 싶습니다 String
:
let string_list = vec!["Foo".to_string(),"Bar".to_string()];
let joined = something::join(string_list,"-");
assert_eq!("Foo-Bar", joined);
관련 :
답변:
Rust 1.3.0 이상에서는 다음을 join
사용할 수 있습니다.
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("-");
표준 라이브러리 prelude 에서 메서드를 자동으로 가져 오기 때문에 아무것도 가져올 필요가 없습니다 .
use
전주곡에 있기 때문에 특성 을 명시 적 으로 지정할 필요가 없습니다 .
join
에를 itertools
.
Wilfred SliceConcatExt::connect
가 언급했듯이 버전 1.3.0부터 다음을 위해 사용되지 않습니다 SliceConcatExt::join
.
let joined = string_list.join("-");
이터레이터를 결합하는 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)
}
join
형식화 알고리즘을 최적화하는 방법이 아니라 에 관한 것이 었습니다.
SliceConcatExt
야간에만 적용됩니다.