Rust Slice

Pendahuluan

Slice adalah tipe data yang melakukan borrowing ownership.

Slice memiliki pointer dan length. Pointer menunjukan awal dari slice, dan length adalah jumlah element slice.

Cara Membuat Slice

Untuk membuat slice digunakan format

&nama_variable[start-index..end-index]

Tips penulisan index,

  • Jika start-index dari 0, dapat ditulis tanpa index awal.
  • Jika end-index adalah akhir dari data, dapat ditulis tanpa index akhir.
let s = String::from("hello");

let slice1 = &s[..2]; // akan berisi "he"
let slice2 = &s[2..]; //akan berisi "llo"
let slice3 = &s[..]; //akan berisi seluruh isi s, yaitu "hello"

Slice Vectors dan Arrays

Selain String, kita dapat membuat slice dari vector dan array.

Array adalah fixed length collection dengan data type yang sama. Sementara vector adalah sizeable array.

Berikut contoh deklarasi vector.

let mut v = vec![1, 2, 3]
v.push(4);

Cara membuat slice untuk array dan vector tidak berbeda dengan membuat string slice.

Mengapa Menggunakan Slice

Agar lebih mudah, kita langsung gunakan contoh code, dari code dibawah dapat dilihat, dengan menggunakan slice, kita dapat membuat fungsi lebih flexible.

fn main(){
    let a = [1, 2, 3];
    let v = vec![4, 5, 6];
    let v_slice = &v[..];

    only_ref_arr(&a);
    only_ref_vec(&v);
    ref_vec_arr(&a[..]);
    ref_vec_arr(&v[..]);
    ref_vec_arr(&v_slice[0..1]);

}

fn only_ref_arr(param: &[i32; 3]){
    println!("this is an array {:?}", param);
}

fn only_ref_vec(param: &Vec<i32>){
    println!("this is an vector {:?}", param);
}

fn ref_vec_arr(param: &[i32]){
    println!("this is a slice {:?}", param);
}
this is an array [1, 2, 3]
this is an vector [4, 5, 6]
this is a slice [1, 2, 3]  
this is a slice [4, 5, 6]  
this is a slice [4] 

Sharing is caring:

Leave a Comment