Post

5. Rust 소유권 이해

Rust의 소유권(Ownership)은 Rust가 다른 언어와 구분돼 갖는 가장 큰 특징 중 하나 입니다. 이 개념은 Rust를 다른 시스템 프로그래밍 언어와 구별되게 만드는 중요한 특징 중 하나입니다.

소유권의 세 가지 규칙

  1. 각 값은 소유자(owner)를 가집니다.
  2. 값은 하나의 소유자만 가질 수 있습니다.
  3. 소유자가 범위를 벗어나면 값은 즉시 소멸됩니다.

소유권의 작동 방식

  • 값이 함수로 전달되거나 변수 간에 이동될 때, 이 값은 소유권이 이전되어야 합니다.
  • 값이 소유권이 이전된 후에는 이전한 변수를 사용할 수 없습니다.

소유권의 이동과 복사

  • 값이 이동될 때는 기존 변수는 사용할 수 없게 됩니다.
  • 복사를 원할 경우 clone() 메서드를 사용하여 복사해야 합니다.
1
2
3
4
5
6
fn main() {
    let s1 = String::from("hello");
    let s2 = s1; // s1의 값이 s2로 이동됨
    println!("{}", s1); // 컴파일 에러 발생!
}

소유권의 반환

  • 함수에서 값이 반환될 때, 해당 값은 함수 내부에서 소유권을 이전받는 변수가 됩니다.
  • 값이 반환된 후에는 이전 변수를 다시 사용할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
fn do_stuff(s: String) -> String {
    // s를 가공하거나 다른 작업을 수행
    s
}

fn main() {
    let s1 = String::from("hello");
    let s2 = do_stuff(s1); // s1의 소유권이 do_stuff 함수로 이동됨
    println!("{}", s1); // 컴파일 에러 발생!
}

0

This post is licensed under CC BY 4.0 by the author.