Ownership (Rust)
메소드의 self, &self, &mut self
self - 함수가 값을 소모하는 경우. 오너십을 받는다. (move)
&self - 함수가 값을 읽기만 하는 경우. 참조만 받는다. (borrow)
&mut self - 함수가 값을 소모하지 않고 변경하는 경우. 가변참조를 받는다. (borrow)
함수에서 참조 반환하기
fn try_create<'a>() -> &'a String {
&String::new()
}
- 함수 내에서 만든 임시 값의 오너십을 함수가 가지고 있기 때문이다.
- 함수가 끝날 때 임시 값은 드랍되고, 메모리에서 사라진다.
- 따라서 반화하려던 참조는 댕글링 참조(Dangling reference)가 된다.
error[E0515]: cannot return reference to temporary value
--> src/lib.rs:2:5
|
2 | &String::new()
| ^-------------
| ||
| |temporary value created here
| returns a reference to data owned by the current function
- 함수 내에서 만든 임시 값의 참조를 반환하는 것은 불가능하다.
참고자료
이 문서를 인용한 문서