변수, 불변성, 데이터 타입

Rust는 안전성을 위해 변수는 기본적으로 불변(immutable) 입니다. 따라서, 필요한 경우 변수의 값을 변경하려면 명시적으로 가변(mut)으로 선언해야 합니다. 변수 선언 시 let을 사용하고, 스칼라 타입은 숫자, 불리언, 문자가 있으며, 타입을 지정해야 하는 정적 타입 언어이나 타입 추론이 가능합니다.


🔹 준비

Code의 터미널 창에서 D:\rust-practice 폴더로 이동한 다음
cargo new day2라고 입력해서 day2 패키지를 만들고
cd day2라고 입력해서 day2 폴더로 이동합니다.

main.rs는 day2 아래 src 폴더에 있습니다.

🔹 변수 선언

fn main() {
let x = 5;
println!("x의 값은: {}", x);
}
  • let 키워드는 변수를 선언합니다.
  • x는 기본적으로 불변 변수입니다. 변수인데 불변이라고 하니 Rust는 참 독특한 개념의 언어입니다.
  • {}는 print, 다시 말해 출력 시 변수가 위치할 자리(placeholder)입니다.

실행

위 코드를 복사해서 에디터의 main.rs의 내용을 덮어쓰고 저장한 다음
cargo run을 실행하면
출력되는 값은 “x의 값은: 5″입니다.

출력 구문 변경

중괄호안에 변수를 넣어
println!(“x의 값은: {x}”);
과 같이 구문을 바꿀 수 있습니다.

main.rs 위의 run 실행

Code를 닫았다가 열면 rust-analyzer가 다시 실행되면서 아래와 같이 main.rs위에 Run|Debug가 생기므로

main.rs 위에 run 명령어가 보이고, 이를 눌러 rust 패키지를 실행할 수 있다.
흰색 동그라미는 파일이 저장되지 않았다는 의미

run을 눌러 실행할 수 있습니다.

cargo run을 할 때는 먼저 파일을 저장해야 하는데 위 run을 누르면 자동으로 파일을 저장하고, cargo run을 실행하므로 너무 편리합니다.

🔁 값을 바꾸려면?

fn main() {
let x = 5;
x = 6; // 에러! 기본 변수는 값 변경 불가
}

오류 메시지: cannot assign twice to immutable variable x
(불편 변수인 x에 값을 두 번 할당할 수 없다)

//는 주석 표시입니다. 다시 말해 // 다음의 문장은 프로그램 실행 시 제외됩니다.

기존 구문을 주석 처리하고 위 구문을 추가할 때
해당하는 2줄을 마우스로 끌어서 선택하고 Ctrl + /키를 누르면 맨 앞에 // 표시가 추가됩니다.

fn main() {
    // let x = 5;
    // println!("x의 값은: {x}");

    let x = 5;
    x = 6; // 에러! 기본 변수는 값 변경 불가    
}

🔧 가변 변수 (mutable)

fn main() {
let mut x = 5;
println!("처음 x: {x}");
x = 6;
println!("바뀐 x: {x}");
}
  • mut 키워드를 사용하면 값 변경이 가능합니다.

실행

실행하면 화면에 아래와 같이 출력됩니다.
처음 x: 5
바뀐 x: 6


🧮 스칼라 타입(Scalar Types)

스칼라(scalar)는 하나의 값으로 표현되는 타입입니다. Rust는 정수(integer), 부동소수형 숫자(floating-point numbers), boolean(논리형), 그리고 문자(char)라는 네 가지 타입을 보유하고 있습니다. Rust는 정적 타입 언어이며, 대부분 타입은 명시하지 않아도 추론됩니다.

정적 타입 언어는 컴파일 시 변수 타입이 결정되는 언어이고, 동적 타입 언어는 런타임 시 변수 타입이 결정되는 언어, 다시 말해, 코드를 실행할 때 알아서 변수 타입을 판단해주는 언어입니다. 그러나 Rust는 정적 타입 언어임에도 변수 타입을 프로그램에서 지정하지 않더라도 변수 타입을 추론한다는 것이 다른 점입니다.

숫자형

정수형은 소수점이 없는 숫자이고, 부동소수형은 소수점이 있는 숫자입니다. 3을 부동소수형으로 표현할 경우 소수점이하가 0이더라도 3.0이라고 써야지 3으로 쓰면 안되며, 최소한 3.이라고 소수점을 찍어야 합니다.

위 코드에서 let a = 10;이라고 변수에 정수를 대입하면 : i32를 입력하지 않아도 rust analyzer가 : i32를 알아서 추가해서 표시합니다. 3.14도 마찬가지로 : f64라는 타입을 자동으로 표시합니다. 이것이 추론입니다.

: i32 또는 : f64가 없어도 프로그램 실행에 전혀 문제가 없으며, 직접 입력하려면 : i32라고 입력해야 합니다. 아래와 같이 Code에서 타입을 입력한 것은 녹색으로 보이고, 추론한 것은 회색으로 보입니다.

숫자형의 종류

불리언 & 문자

let t: bool = true;
let c: char = 'R'; // 유니코드 문자

마찬가지로 : bool을 입려하지 않아도 값이 true이므로 boolean으로 추론되고, 문자 하나를 입력했으므로 : char로 자동으로 표시됩니다. 이때 문자는 반드시 작은따옴표 안에 입력해야 하며, “R”로 바꾸면 에러가 발생합니다.

파이썬은 자유롭게 작은따옴표 또는 큰따옴표를 사용할 수 있는 것과 다릅니다.


※ 문자 한 개(char)가 아니라 “I am a boy”과 같은 문자열은 String 타입으로 구분되므로 나중에 별도로 다루도록 하겠습니다.


📌 변수 섀도잉(Shadowing)

Rust에서는 같은 이름의 변수로 새로운 값을 선언할 수 있습니다.

fn main() {
let x = 5;
let x = x + 1;
let x = x * 2;
println!("x의 값: {x}"); // 12
}
  • let을 반복 사용하면 기존 변수를 덮어쓰는(shadowing) 것처럼 새 변수 선언이 가능합니다.
  • 타입을 변경하는 것도 허용됩니다. 아래는 x가 i32 형식이었다가 char 형식으로 변경된 것을 보여줍니다.

‘R’; 다음의 주석 “// 변수 재정의 가능”도 입력한 것이 아니고 rust analyzer가 알아서 입력한 것입니다. 참 똑똑합니다.

위 코드의 출력 값은
x의 값: 12 (x는 5 -> 6 -> 12가 됨)


🧠 정리

  • 변수는 기본 불변 → 변경하려면 mut 사용
  • 정적 타입 → 타입을 명시하는 것이 원칙이지만 타입 추론 가능
  • Shadowing으로 가변처럼 활용 가능하나, 메모리 안정성을 유의해서 사용하지 않는 것이 바람직함

Rust 생태계와 Hello, World! 출력하기

🔸 Rust 생태계

러스트의 생태계는 여러가지 도구들로 구성되어 있으며, 그 중 중요한 것은 rustc, cargo, rustup입니다. 그러나, Visual Studio Code가 있기 때문에 cargo new를 이용해 간단하게 패키지를 만들고, cargo run을 이용해 실행할 수 있습니다.

  • rustc : rust의 확장자는 .rs이며, 이 파일을 바이너리 또는 다른 중간 형식으로 변환해주는 역활을 하는 컴파일러입니다. 그러나 Visual Studio Code(이하 code)를 사용하기때문에 거의 사용하지 않습니다.
  • cargo : rust 실행에 필요한 라이브러리를 관리하고 또한 프로젝트를 관리, 빌드, 테스트하는 도구입니다.
  • rustup : 첫번째 개발환경 세팅에서 언급한 바와 같이 rust를 업데이트해주고, toolchain을 설치하는 역활을 합니다. 여러 개의 rust 버전이 설치되어 있을 때 필요한 것을 선택할 수 있도록 합니다.

🔸 폴더 만들고 Code 실행하기

명령 프롬프트 창을 열고 D드라이브 루트인 상태에서 md rust-practice 라고 입력해서 rust-practice 폴더를 만들고

루트에서 cd rust-practice 폴더로 이동한 다음 code . 이라고 입력하면 rust-practice 폴더에서 code가 실행됩니다.

폴더를 만들고 그 폴더로 이동한 다음 visual studio code를 실행함

code 화면에 terminal이 실행되어 있지 않다면 ctrl + `(키보드 1 왼쪽 키)를 눌러 terminal을 엽니다.

🔸 cargo new

그리고, cargo new day1 이라고 입력하고 엔터 키를 누르면

code 터미널 창에서 cargo new 명령을 이용해 새로운 패키지를 만듭니다.

그러면 왼쪽 탐색기 창을 보면 rust-practice 아래에 preview 폴더가 생기고 오른쪽 터미널 창을 보면 preview라는 바이너리 패키지를 생성하고 있다는 메시지와 Cargo.toml 키를 더 알아보고, 사이트를 참고하라고 합니다.

cargo enw day1이라고 입력해서 day1이라는 패키지를 생성한 화면

다시 왼쪽 탐색기 창의 preview를 열어보면 preview 폴더 아래에 src 폴더가 있고, 그 아래 main.rc 파일이 있고, src 폴더와 동급으로 .gitignore, Cargo.toml 파일이 있습니다.

day1 폴더 아래에 src 폴더가 있고, 그 아래 main.rc 파일이 있으며, src 폴더와 동급으로 .gitignore, Cargo.toml 파일이 있습니다.

Cargo new 패키지명을 입력하면 기본적으로 이런 형식으로 폴더와 파일이 만들어집니다.

🔸 main.rs의 내용

이제 main.rs를 클릭하면 오른쪽 에디터 창에 아래와 같이 표시됩니다.

기본적인 main.rs의 내용은 "Hello, world!를 화면에 출력하라"는 것입니다.

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

fn은 function이라는 의미이고, main은 함수명이며 괄호 안에 인수를 넣는데 괄호만 있으므로 인수가 없는 것입니다.

그리고, 중괄호안에 실행할 내용이 들어가는데,

println!(“Hello, world!”);란 화면에 “Hello, world!를 출력하라”는 의미입니다.

🔸 cargo run

cargo run은 컴파일하고, 패키지를 실행하는 명령어입니다.

터미널에서 day1 폴더로 이동해야 하므로 ‘cd day1’이라고 입력하고 엔터키를 입력한 다음 ‘cargo run’이라고 입력하고 엔터키를 누르면

Compiling과 Finished, Running이라는 글자가 보이고, 화면에 “Hello, world!가 출력됐습니다.

Finished 이전에는 Building이라고 표시되다가 Finished로 바뀌었습니다.

실행 파일은 target 폴더 아래 debug 폴더에 day1.exe란 이름으로 생겼습니다. 실행 파일의 사이즈가 궁금하면 탑색기에서 살펴보기 바랍니다. 그러나 실행은 명령 프롬프트 창에서 해야 합니다.

이렇게 rust 프로그램을 만들고 실행하는 법을 전체적으로 살펴봤습니다.

Rust 언어 개발환경 세팅

Rust 언어 개발환경 세팅에 대해 알아보겠습니다. Rust는 떠오르고 있는 안전하고 강력한 언어로서 Rust는 C++의 단점을 보완하기 위해 최근에 탄생한 언어이며, 개발자 사이에 많은 인기를 얻고 있는 언어입니다. 그러나, 소유자, 빌림, 생명주기 등 이전에 없던 새로운 개념 때문에 배우기 어려운 언어로 알려지고 있습니다.

Rust 언어 개발환경 세팅에 대해 알아보겠습니다. Rust 언어는 시스템 프로그래밍 분야에서 메모리 안전성, 속도, 병렬성 문제를 해결하기 위해 Mozilla가 개발했고, 개발자 사이에 많은 인기를 얻고 있는 언어입니다. 그러나, 소유자, 빌림, 생명주기 등 이전에 없던 새로운 개념 때문에 배우기 어려운 언어로 알려지고 있습니다.

2025년 5월의 티오베 인덱스에 의하면 개발 언어 중 1위는 파이썬이고, Rust는 19위입니다. 그러나, PYPL의 인기 언어 순위에서 Rust는 8위로 높습니다.

가. Visual Studio(권장) 또는 Microsoft C++ Build Tools 설치

파이썬은 파이썬만 설치하고 Visual Studio Code에서 바로 프로그램을 작성할 수 있는데, Rust는 컴파일 언어이기 때문에 컴파일 환경 세팅이 필요합니다.

아이러니하게도 컴파일 환경은 C++ 개발환경으로 세팅합니다.

설치 URL은 아래와 같습니다.

https://visualstudio.microsoft.com/ko

Visual Studio를 설치하는 동안 .NET 데스크톱 개발C++를 사용한 데스크톱 개발 및 유니버설 Windows 플랫폼 개발이라는 Windows 워크로드를 선택합니다.

나. Rust 설치

Rust를 설치하는 것은 간단합니다.

https://www.rust-lang.org/tools/install 사이트에 접속한 후 자신의 OS 환경(Windows, Linux 등)에 따라 설치하면 됩니다.

설치 과정에서 PATH를 설정하기 때문에 따로 PATH를 지정하지 않아도 됩니다.

설치한 후 rust를 업데이트 할 때는 명령 프롬프트 창에서

rustup update라고 입력하면 됩니다.

다. Visual Studio Code 설치

Visual Studio는 컴파일 환경만을 제공하는 것이고, 실제 프로그램은 Visual Studio Code에서 작성합니다.

설치 URL은 아래와 같습니다.

https://code.visualstudio.com

라. Extension 설치

Extension으로 꼭 필요한 것은 rust-analyzer와 CodeLLDB입니다.

마. 세팅 완료 여부 확인

명령 프롬프트를 실행한 후

rustc –version을 입력하고 엔터 키를 쳤을 때 아래와 같이 rustc 버전이 표시되면 정상적으로 설치된 것입니다.

rust 세팅이 제대로 됐는지 확인하기 위한 명령어 및 실행 결과

하나 더 확인하려면 cargo –version이라고 입력하고 엔터 키를 누르면 아래와 같이 cargo 버전이 표시돼야 합니다.

cargo 세팅이 잘 됐는지 확인하기 위한 명령어 및 실행 결과

이제 Rust로 프로그램을 개발할 준비가 완료되었습니다.

다음부터는 실제 프로그램을 작성하면서 Rust에 대해 배워보겠습니다.

위에서도 얘기한 바와 같이 배우기 어려운 언어이기 때문에 단단히 마음먹어야 합니다.