본문 바로가기
 

하나성경

읽기 쉬운 성경, 하나성경을 소개합니다.

www.hbible.co.kr

컴퓨터에서는

[ Rust ] 초급 문법 : 7. 참조와 대여 (&, &mut) – 변수를 참조하는 방법과 가변 참조

by 컴 여행자 2025. 4. 2.
728x90
반응형

 

러스트
러스트

 

 

초급 문법 : 7. 참조와 대여 (&, &mut) – 변수를 참조하는 방법과 가변 참조

 


 

Rust의 참조와 대여 (&, &mut) 배우기

Rust에서 변수를 직접 소유하는 대신 참조하는 방법을 배우겠습니다. 참조(reference)를 사용하면 데이터의 실제 소유권을 이동하지 않고도 변수를 접근할 수 있습니다.


1. 참조란 무엇인가?

Rust에서 변수를 참조할 때 &를 사용합니다.

  • 소유권을 넘기지 않고 데이터를 읽을 수 있음.
  • &mut을 사용하면 데이터를 변경할 수 있음.

즉, "참조는 데이터를 직접 소유하지 않지만 접근할 수 있는 방법" 입니다.


2. VS Code에서 직접 실습하기

이제 실제로 코드를 작성하고 실행해 봅시다.

(1) VS Code에서 Rust 파일 생성

 

1️⃣ 터미널 열기

  • VS Code를 실행하고, Ctrl + ~ (물결표) 키를 눌러 터미널을 엽니다.
  • 또는 메뉴에서 [터미널] → [새 터미널] 선택하세요.

2️⃣ 새 Rust 프로젝트 생성

  • 새로운 Rust 프로젝트를 만들 폴더로 이동 (예: C:\RustProjects)
cd C:\RustProjects

 

  • 터미널에 아래 명령을 입력하고 Enter 키를 누릅니다.
  • rust_reference이라는 폴더가 생성됩니다.
cargo new rust_reference

 

 

3️⃣ 프로젝트 열기

  • VS Code에서 [파일] → [폴더 열기] 선택 후 rust_reference 폴더를 엽니다.

4️⃣ 메인 파일 열기

  • 왼쪽 src 폴더에서 main.rs 파일을 클릭하여 엽니다.

 


(2) 참조 (&) 사용 예제

1) 기본 참조 (&)

fn main() {
    let x = 10;      // 정수형 변수 x 선언
    let r = &x;      // x를 참조하는 변수 r 선언

    println!("x의 값: {}", x); // 직접 출력
    println!("r의 값: {}", r); // 참조를 통해 출력
}

 

설명

  • let r = &x; → x의 값을 소유하지 않고 참조만 함.
  • r은 x를 읽을 수 있지만 변경할 수 없음.

실행 방법

  • Ctrl + S를 눌러 파일을 저장합니다. (메뉴 -> 파일 -> 저장)
  • VS Code 터미널에서 아래 명령어를 실행합니다.
cargo run

 

  • 출력 결과 :
x의 값: 10
r의 값: 10

 

 


(3) 가변 참조 (&mut) 사용

2) 가변 참조 (&mut)

fn main() {
    let mut x = 10;  // 가변 변수 x 선언
    let r = &mut x;  // x의 가변 참조 r 선언

    *r += 5;  // 참조를 통해 x의 값을 변경

    println!("x의 값: {}", x);  // 변경된 값 출력
}

 

설명

  • let mut x = 10; → x를 가변 변수로 선언해야 함.
  • let r = &mut x; → x를 가변으로 참조함.
  • *r += 5; → *r을 사용하여 x 값을 변경함.

실행 결과

x의 값: 15

3. 중요한 규칙

Rust에서는 안전한 메모리 관리를 위해 다음 규칙을 지켜야 합니다.

❌ 오류 발생하는 경우

fn main() {
    let mut x = 10;
    let r1 = &mut x;
    let r2 = &mut x; // ❌ 동일한 가변 참조를 두 개 가질 수 없음!

    println!("{} {}", r1, r2);
}

💡 해결 방법

하나의 가변 참조만 사용하도록 하기:

fn main() {
    let mut x = 10;
    {
        let r1 = &mut x;
        *r1 += 5;
    } // r1의 생명주기가 끝남

    let r2 = &mut x; // 새로운 가변 참조 가능
    *r2 += 5;

    println!("x의 값: {}", x);
}

 

출력 결과:

x의 값: 15

4. 정리

  1. & → 변수를 읽을 수 있는 불변 참조
  2. &mut → 변수를 변경할 수 있는 가변 참조
  3. 하나의 가변 참조만 허용됨!
  4. 불변 참조는 여러 개 가능하지만, 가변 참조와 동시에 사용 불가능.

 

이상으로 참조와 대여에 대해서 알아보았습니다.

 


 

러스트 프로그래밍 언어 관련 글 목록입니다.

 

[ Rust ] 러스트 프로그래밍 언어 관련 글 목록입니다.

러스트 컴퓨터 프로그래밍 언어를 아이들에게 알려주기 위해 글을 작성하고 있습니다.가능한 쉽고 자세하게 그리고 잘 따라할 수 있도록 작성해 보려고 합니다.글이 작성되는 대로 계속 추가하

hb-love-each-other.tistory.com

 

 


 

https://rust-kr.org/

 

한국 러스트 사용자 그룹

 

rust-kr.org

 

https://www.rust-lang.org/

 

Rust Programming Language

A language empowering everyone to build reliable and efficient software.

www.rust-lang.org

 

 

728x90
반응형

댓글