[Rust] Ownership, Scope, Transfer Ownership 과 Borrowing

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을 추적한다.

댓글 없음:

댓글 쓰기

[Rust] Ownership, Scope, Transfer Ownership 과 Borrowing

Scope, Ownership, Transfer Rust에서 사용하는 영역, 소유, 소유권 이전, 복사, 빌림을 요약해 보는 것이 목적이다. 소유(Ownership)은 Java, Go와 같은 백그라운드에서 실행하는 garbage collector가 없...