Rust - Slices

Mickey·2022년 1월 14일
0

Rust

목록 보기
17/32
post-thumbnail
post-custom-banner

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
}

profile
Mickey
post-custom-banner

0개의 댓글