https://www.tutorialspoint.com/rust/rust_slices.htm
슬라이스는 메모리 블록에 대한 포인터
슬라이스를 사용하여 연속 메모리 블록에 저장된 데이터 부분에 액세스 가능
배열, 벡터 및 문자열과 같은 데이터 구조와 함께 사용할 수 있음
슬라이스는 인덱스 번호를 사용하여 데이터 부분에 액세스
슬라이스의 크기는 런타임에 결정
슬라이스는 실제 데이터에 대한 포인터
Borrowing을 통해 함수로 전달
let sliced_value = &data_structure[start_index..end_index]
최소 인덱스 값은 0이고 최대 인덱스 값은 데이터 구조의 크기
fn main() {
let n1 = "Tutorials".to_string();
println!("length of string is {}",n1.len());
let c1 = &n1[4..9];
// fetches characters at 4,5,6,7, and 8 indexes
println!("{}",c1);
}
fn main(){
let data = [10,20,30,40,50];
use_slice(&data[1..4]);
//this is effectively borrowing elements for a while
}
fn use_slice(slice:&[i32]) {
// is taking a slice or borrowing a part of an array of i32s
println!("length of slice is {:?}",slice.len());
println!("{:?}",slice);
}
&mut 키워드는 슬라이스를 가변으로 표시
fn main(){
let mut data = [10,20,30,40,50];
use_slice(&mut data[1..4]);
// passes references of 20, 30 and 40
println!("{:?}",data);
}
fn use_slice(slice:&mut [i32]) {
println!("length of slice is {:?}",slice.len());
println!("{:?}",slice);
slice[0] = 1010; // replaces 20 with 1010
}