What is Slice

Slice is somepart of larger data, it always borrow data(Hence RO) from the sliced type.
It gives you a view into a larger collection. Slice cannot grow
Slices always borrow from another object. Original object has to remain 'alive' (in scope) for at least as long as slice is alive.

String Slice


fn main() {
    let s:&str = "TestHere";
    let s_slice:&str = &s[1..3];    //Slice always borrow data
    println!("{}", s_slice);            //es
}
    

Array Slice


fn main() {
    let arr:[i32; 5] = [1,2,3,4,5];
    let arr_slice:&[i32] = &arr[2..4];
    println!("{:?}", arr_slice);        //[3,4]
    let arr_slice_full:&[i32] = &arr[2..];
    println!("{:?}", arr_slice_full);        //[3,4,5]
}
            

Creating Slices


fn main() {
    let s:&str = "TestHere";
    let s_slice_full:&str = &s[..];      //TestHere
    let s_slice1:&str = &s[2..s.len()];  //stHere
    let s_slice2:&str = &s[2..];         //stHere
    let s_slice3:&str = &s[0..2];        //Te
    let s_slice4:&str = &s[0..s.len()];  //TestHere
}