Thinking Different




슬라이스 (Slices)

 

문자열 또는 배열 등의 연속되는 일부분 범위(Range)를 참조하기 위해 사용한다.

 

&변수명[시작..끝] 구문으로 사용되고, 시작과 끝의 범위내에서 끝은 포함하지 않는다.

슬라이스는 참조(&)로 반환되므로 소유권을 갖지 않는다.

 

 

배열 슬라이스

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

    // 인덱스 0부터 3까지 슬라이스 한다 (end는 포함되지 않으므로 값은 3까지)
    let arr_slice = &arr[0..3];

    println!("{:?}", arr_slice);
}


// 결과값
[1, 2, 3]

 

 

문자열 슬라이스

fn main()
{
    let s = String::from("Hello Rust");

    let slice = &s[0..5];		// 인덱스 0 ~ 5
    let slice2 = &s[6..10];		// 인덱스 6 ~ 10
    let slice3 = &s[3..];		// 인덱스 3 ~ end
    let slice4 = &s[..8];		// 인덱스 start ~ 8
    let slice5 = &s[..s.len()];		// 인덱스 start ~ s 길이만큼
    
    println!("{}", slice);
    println!("{}", slice2);
    println!("{}", slice3);
    println!("{}", slice4);
    println!("{}", slice5);
}


// 결과값
Hello
Rust
lo Rust
Hello Ru
Hello Rust