Rust - 2개 배열 하나로 합치기

러스트에서 배열 2개를 하나의 배열로 합치는 방법에 대해서 알아보겠습니다.

1. concat()을 이용한 방법

아래와 같이 두개 배열을 새로운 배열로 전달하고 concat()을 호출하면, 두 배열의 요소들을 모두 포함하는 벡터가 생성됩니다.

fn main() {
    let arr1: [i32; 3] = [1, 2, 3];
    let arr2: [i32; 3] = [4, 5, 6];

    let v: Vec<i32> = [arr1, arr2].concat();
    println!("{:?}", v);
}

Output:

[1, 2, 3, 4, 5, 6]

암시적 타입 사용

위의 코드는 일부러 명시적으로 타입을 입력하였는데, 아래와 같이 타입을 입력하지 않아도 됩니다.

fn main() {
    let arr1 = [1, 2, 3];
    let arr2 = [4, 5, 6];

    let v = [arr1, arr2].concat();
    println!("{:?}", v);
}

Output:

[1, 2, 3, 4, 5, 6]

벡터를 배열로 변경

벡터를 배열로 변경하고 싶다면 아래와 같이 as_slice()try_into() 등을 사용하여 변환할 수 있습니다.

  • 리턴 값을 받는 변수의 타입은 명시적으로 입력해야 함
  • 벡터를 배열로 변환할 때 암시적 타입으로 변환되는 방법은 못봄
fn main() {
    let arr1 = [1, 2, 3];
    let arr2 = [4, 5, 6];

    let v = [arr1, arr2].concat();
    println!("{:?}", v);

    let arr3: [i32; 6] = v.as_slice().try_into().unwrap();
    println!("{:?}", arr3);
}

Output:

[1, 2, 3, 4, 5, 6]

2. collect()를 이용한 방법

아래와 같이 iter(), copied(), collect() 등을 사용하여 두개의 배열을 하나로 연결할 수 있습니다.

  • 합쳐진 배열은 벡터 타입으로 리턴됨
  • 벡터를 배열로 변경하려면 위의 예제와 동일하게 변환
fn main() {
    let arr1: [i32; 3] = [1, 2, 3];
    let arr2: [i32; 3] = [4, 5, 6];

    let v = arr1.iter().copied().chain(arr2.iter().copied()).collect::<Vec<i32>>();
    println!("{:?}", v);
}

Output:

[1, 2, 3, 4, 5, 6]
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha