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);
}
함수가 변수/값에 대한 제어를 일시적으로 다른 함수로 이전할 때 잠시 동안 이를 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);
}
변경 가능한 참조에는 &mut가 접두사로 붙음
가변 참조는 가변 변수에서만 작동
fn add_one(e: &mut i32) {
*e+= 1;
}
fn main() {
let mut i = 3;
add_one(&mut i);
println!("{}", i);
}
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
}