Scope, Ownership, Transfer
Rust에서 사용하는 영역, 소유, 소유권 이전, 복사, 빌림을 요약해 보는 것이 목적이다. 소유(Ownership)은 Java, Go와 같은 백그라운드에서 실행하는 garbage collector가 없다는 것이다.
Rust Ownership의 주요 키워드
- Move: Trasnferring Ownership
- Copy
- Borrowing
- Mutable Borrowing
Scope와 Ownership, Lifetime
- 문맥에서 소유와 빌림(borrowing)은 다름을 명심하다.
- 모든 변수는 반듯이 하나 소유해야 한다. 2개, 3개도 불허한다
- 영역의 정의
- 시작은 '{' (대괄호) 시작한다.
- 끝은 '}' 또는 return 위치이다.
- 소유 영역에서 벗어나면 파기된다.
- lifetime은 변수가 생성되고, 삭제되는 기간을 이야기 한다.
- 소유를 다른 영역으로 전송할 수 있다.
소유권 이전(Transferring Ownership)
- 한 영역의 변수의 소유권을 다른 영역으로 이전(moving)하는 것이다.
복사(Copying)
- 원시 타입같은 경우는 소유권 이전보다 복사를 한다.
- 예) interger, floating-point, bytes(스택의)
- Ownership에 의존하지 않는 타입을 Copy trait이 있다.
빌림(Borrowing)
- 만약 데이터를 이동(moving)한다면, 소유권이 새로운 변수로 바뀐다. 이 것은 다른말로 새로이 받은 변수가 영역이 삭제될 경우, 메모리상의 데이터가 삭제가 된다.
- 소유권은 이전하지 않고, 값을 참조할 때 사용한다.
- 참조 형태:
- mutable:
- 빌림 변수의 영역이 끝나면, 소유한 영역의 변수 값이 바뀔 수 있다.
- mutable borrowing이 되어 살아 있다면, 다른 영역에서 immutable borrowing을 생성 할 수 없다.
- immutable(기본): 일기 전용 변수이다.
- 표현은 '&'를 같이 정의한다
- 컴파일러는 모든 빌림 변수에 lifetime을 추적한다.
댓글 없음:
댓글 쓰기