Rust의 변수

2024. 10. 8. 18:33·Programming Language/RUST

⭐ Rust의 변수 특징

Rust의 변수는 기본적으로 불변이다.

즉, 불변성 변수에 값을 재할당하려고 하면 컴파일 에러가 발생한다.

이 덕분에 Rust는 코드의 안전성과 동시성에서 강점을 발휘한다.

 

 

🏃‍♂️ 실습 해보자!

불변성 확인해보기

먼저, variables 라는 새 프로젝트를 생성한다.

본인은 VS Code에서 진행하므로, VS Code도 실행해 주었다.

cargo new variables --bin
cd variables
code .

 

`main.rs`파일에 다음 코드를 작성해서 실행해보자.

fn main() {
    let x = 5;
    println!("The value of x is: {}", x);
    x = 6;
    println!("The value of x is: {}", x);
}

 

다음처럼 컴파일 에러가 발생한 것을 볼 수 있다.

에러는 불변성 변수인 x에 재할당이 불가하다는 것을 알려주고 있다.

 

 

가변성 변수로 만들어보자

그렇다면 이제 다음과 같이 코드를 수정해보자.

fn main() {
    let mut x = 5;
    println!("The value of x is: {}", x);
    x = 6;
    println!("The value of x is: {}", x);
}

가변성 변수를 생성하려면 let mut로 변수를 선언하면 된다.

 

이렇게 성공적으로 변수에 재할당이 된 것을 확인할 수 있다.

 

 

Shadowing

Rust는 이전에 선언한 변수와 같은 이름의 새 변수를 선언할 수 있다.

이 때, 새 변수는 이전 변수를 shadow하게 된다.

Shadowing을 사용하면 변수의 유형을 변경할 수 있고, 이전 변수와 같은 이름을 계속 사용할 수 있다.

 

fn main() {
    let x = 5;

    let x = x + 1;

    let x = x * 2;

    println!("The value of x is: {}", x);
}

이렇게 let x = 구문으로 x 를 새로 선언해 새로운 값으로 shadow 할 수 있다.

 

위 코드를 실행하면 최종적으로 12라는 결과값을 얻을 수 있다.

 

 

그렇다면 가변성 변수와 shadowing의 차이는 무엇일까?

일단 mut로 선언하는 것과 가장 큰 차이는 가변성/불변성이다.

즉, let 키워드를 사용하지 않고 새로운 값을 할당하려 하면 컴파일 에러가 발생한다는 이야기이다.

 

또 다른 차이점은 변수 유형을 변경할 수 있느냐, 없느냐 이다.

mut로 변수를 생성하게 되면, 해당 변수에 저장될 수 있는 변수의 유형이 고정된다.

 

예를 들어, 다음과 같은 코드를 작성해보았다.

fn main() {
    let mut x = 5;

    x = x + 1;

    println!("The value of x is: {}", x);
}

 

실행해보면 다음처럼 에러가 발생한다.

이는 x의 유형이 int인데, str을 넣으려고 했기 때문에 mismatched types 에러가 발생한 것이다.

 

이번엔 shadowing을 통해 변수를 재선언 해보자.

fn main() {
    let x = "abc";

    let x = x.len();

    println!("The value of x is: {}", x);
}

위는 먼저 문자열을 할당한 다음, 정수인 문자열의 길이를 할당하는 코드이다.

 

이렇게 변수의 유형이 바뀌어도 에러가 발생하지 않고 잘 실행이 되는 것을 확인할 수 있다.

 


참고 자료

https://rinthel.github.io/rust-lang-book-ko/ch03-01-variables-and-mutability.html

 

변수와 가변성 - The Rust Programming Language

이 문서는 2판 번역본입니다. 최신 2021 에디션 문서는 https://doc.rust-kr.org 에서 확인하실 수 있습니다. 2 장에서 언급했듯이, 기본 변수는 불변성입니다. 이것은 Rust가 제공하는 안전성과 손쉬운 동

rinthel.github.io

 

저작자표시 비영리 (새창열림)

'Programming Language > RUST' 카테고리의 다른 글

[Rustling] exercises/01_variables/variables1.rs 풀기  (1) 2024.10.11
Rustling 시작하기  (3) 2024.10.11
RUST의 데이터 타입  (0) 2024.10.10
Rust로 만드는 숫자 추리 게임  (8) 2024.10.08
Hello, Cargo! (with VS Code)  (0) 2024.10.07
'Programming Language/RUST' 카테고리의 다른 글
  • Rustling 시작하기
  • RUST의 데이터 타입
  • Rust로 만드는 숫자 추리 게임
  • Hello, Cargo! (with VS Code)
602zzang
602zzang
  • 602zzang
    yks_STUDY
    602zzang
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • Programming Language (36)
        • C (15)
        • PYTHON (9)
        • RUST (12)
      • Reverse Engineering (3)
      • OS (17)
        • LINUX (17)
      • 보안 이슈 (6)
      • Digital Forensics (1)
      • CTF (8)
      • 기타 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    rustling
    공급망
    python
    코드업
    TeamH4C
    Rocky Linux
    드림핵
    보안동향
    백준
    umassctf2025
    rust
    bandit
    P4C
    c
    cyberdefenders
    파이썬
    빡공팟
    picoCTF
    보안이슈
    소켓 통신
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
602zzang
Rust의 변수
상단으로

티스토리툴바