Rust - Borrowing

Mickey·2022년 1월 14일
0

Rust

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

https://www.tutorialspoint.com/rust/rust_borrowing.htm

변수의 소유권을 다른 함수에 전달한 다음 소유권을 반환하는 것은 매우 불편
Rust는 값의 소유권이 일시적으로 엔터티로 이전된 다음 원래 소유자 엔터티로 반환되는 Borrowing 개념을 지원

fn main(){
   // a list of nos
   let v = vec![10,20,30];
   print_vector(v);
   println!("{}",v[0]); // this line gives error
}
fn print_vector(x:Vec<i32>){
   println!("Inside print_vector function {:?}",x);
}

What is Borrowing?

함수가 변수/값에 대한 제어를 일시적으로 다른 함수로 이전할 때 잠시 동안 이를 Borrwing 이라고 함
Borrwing은 변수/값 자체를 함수에 전달하는 대신 변수(& var_name)에 대한 참조를 전달
변수/값의 소유권은 제어가 전달된 함수가 실행을 완료한 후 변수의 원래 소유자에게 이전

fn main(){
   // a list of nos
   let v = vec![10,20,30];
   print_vector(&v); // passing reference
   println!("Printing the value from main() v[0]={}",v[0]);
}
fn print_vector(x:&Vec<i32>){
   println!("Inside print_vector function {:?}",x);
}

Mutable References

변경 가능한 참조에는 &mut가 접두사로 붙음
가변 참조는 가변 변수에서만 작동

Mutating an integer reference

fn add_one(e: &mut i32) {
   *e+= 1;
}
fn main() {
   let mut i = 3;
   add_one(&mut i);
   println!("{}", i);
}

Mutating a string reference

fn main() {
   let mut name:String = String::from("TutorialsPoint");
   display(&mut name); 
   //pass a mutable reference of name
   println!("The value of name after modification is:{}",name);
}
fn display(param_name:&mut String){
   println!("param_name value is :{}",param_name);
   param_name.push_str(" Rocks"); 
   //Modify the actual string,name
}

profile
Mickey
post-custom-banner

0개의 댓글