[string] 문자열 벡터에 대한 조인 연산자에 해당하는 것은 무엇입니까?

Strings 의 벡터를 통해 “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 에서 메서드를 자동으로 가져 오기 때문에 아무것도 가져올 필요가 없습니다 .


답변

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)
}


답변