1
호출 전 · 소유
let s1 = String::from("hello");
s1이 힙의 문자열을 소유한다. 이 값을 그대로 함수에 넘기면 소유권도 이동한다.
&s1은 String을 넘기는 대신 그 값을 가리키는 참조자를 만든다. 함수는 빌려 읽고, 소유자는 호출 뒤에도 값을 계속 쓴다.
s1이 힙의 문자열을 소유한다. 이 값을 그대로 함수에 넘기면 소유권도 이동한다.
매개변수 s는 유효한 String을 가리켜 길이를 읽지만, 데이터를 소유하지 않는다.
함수의 참조자 s만 스코프를 벗어난다. 소유권은 처음부터 s1에 남아 있어 반환받을 필요가 없다.
기호 읽기 &는 참조자를 만들고, *는 참조자가 가리키는 값을 역참조한다. Rust 참조자는 살아 있는 동안 유효한 타입의 값을 가리키도록 검사된다.