더북(TheBook)

코드 2-10 참조 전달하기

fn main() {
    let mut address = String::from("Street 1"); ➊

    add_postal_code(&mut address); ➋

    println!("{}", address); ➌
}

fn add_postal_code(address: &mut String) { ➍
    address.push_str(", 1234 Kingston"); ➎
}

➊ 가변 변수를 선언하고 String 값을 할당한다.

➋ add_postal_code 함수에 address 참조를 전달한다.

➌ 수정된 address를 출력한다.

➍ 함수 매개변수는 String의 가변 타입 참조를 기대한다.

➎ push_str 메서드는 String을 직접 변경한다.

add_postal_code 함수는 함수 범위 내에서 해당 소유권을 대여받는다. 따라서 main 함수의 address 변수는 (이전과는 달리) 출력을 시도하기 전에는 범위를 벗어나지 않는다.