러스트 변수

러스트의 변수에 대해서 이해하기 위해서는

변동성(Mutability)이 뭔지 알아볼 필요가 있습니다.

 

변수라는게 뭔지 설명할 수 있다면

딱히 어려운 개념은 아닐겁니다.

 

우선 러스트의 변수는 let 키워드로 선언합니다.

 

다음은 화면에 변수를 출력하는 코드입니다.

fn main() {
    let a = 1;

    println!("a : {}", a);
}

심플합니다. let a = 1 로 초기화 하여 사용했습니다.

 

그럼 다음의 코드는 어떨까요?

fn main() {
    let a = 1;
    println!("a: {}", a);
    
    a = 10;
    println!("a: {}", a);

}
   Compiling rustvariable v0.1.0 (/home/neokay/projects/rust/rustvariable)
error[E0384]: cannot assign twice to immutable variable `a`
  --> src/main.rs:15:5
   |
12 |     let a = 1;
   |         -
   |         |
   |         first assignment to `a`
   |         help: consider making this binding mutable: `mut a`
...
15 |     a = 10;
   |     ^^^^^^ cannot assign twice to immutable variable

컴파일러의 에러 메시지가 나옵니다.

immutable variable 불변의 변수에 대해

두번 할당할 수 없다고 합니다.

불변(immutable)은 변동(mutable)의 반대이며

let 키워드로 선언한 변수는 불변입니다.

 

-> 러스트에서 기본적으로 변수란 불변입니다. (?)

 

기존의 프로그래밍 언어들은 변수는

마음대로 값을 바꿀 수 있는 것 입니다.

하지만 러스트에서는 기본 변수는 값을

변경할 수 없습니다. 그렇다면 상수인가?

그건 아닙니다. 상수는 따로 있습니다.

 

참 묘한 부분인데요. 변수에 변동성을 줘서

값을 변경하려면 mut 키워드를 사용해야 합니다.

mut은 immutable의 반대로 mutable 은

변할 수 있다는 뜻 입니다.

 

let mut a = 1; a는 변동성 변수라는 뜻으로

후에 값을 변경할 수 있다는 뜻입니다.

다음의 코드는 컴파일 에러가 나지 않습니다.

a: 1

a: 10

을 결과로 출력합니다.

fn main() {

    let mut a = 1;
    println!("a: {}", a);
    
    a = 10;
    println!("a: {}", a);

}

 

상수 (Constants)

프로그래밍에서 상수는 값을 변경할 수 없는

변수입니다. 값을 변경할 수 없는 변수란게

말이 좀 그렇지만 정확히는 초기에 한번

값을 할당한 후에 변경하지 못하도록

잠그는 개념입니다.

 

const 상수명 : 데이타 타입 = 값

 

의 형식으로 사용합니다.

 

fn main() {
    println!("Hello, world!");

    const MY_CONSTANT: i64 = 777;

    println!("my constant : {}", MY_CONSTANT);

    // 할당할 수 없다.
    // MY_CONSTANT = 5;
}

 

데이터 타입에 대한 튜토리얼이

다음 포스팅 내용으로 const 는

그 다음에 다룰 내용입니다 - 긴 하지만

딱히 const 키워드도 C언어와 비슷하고

사용법도 비슷합니다. const 에는

mut 키워드를 사용할 수 없습니다.

 

정리

 

let

-> immutable 변수

 

let mut

-> mutable 변수

 

const

-> const 상수

 

러스트는 기존 C계열 언어와는 좀 다릅니다.

 

변경할 수 없는 immutable variable 개념이

기본 변수에 들어있으니까 상수인

const 와 혼동하지 않도록 주의합니다.

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band