Rust 개발환경 설정 및 프로젝트 구조

이종경·2025년 3월 7일
0

WASM

목록 보기
2/3
post-thumbnail

Rust란

Rust는 시스템 프로그래밍 언어로, 메모리 안전성성능을 중시하며, 주로 낮은 수준의 프로그래밍에 적합합니다. Rust는 런타임이나 가비지 컬렉터 없이 메모리 안전성을 제공하는 대표적인 언어입니다. Mozilla에서 개발하였고, 2010년에 처음 공개되었습니다.

Rust의 특징

메모리 안정성

크로미움 프로젝트에서 보안 취약성에 대해 발표한 보고서를 따르면 심각한 보안 이슈의 70%가 메모리와 안전 문제였다고 합니다.

다른 언어들은 가비지 컬렉터를 사용하는 반면, Rust는 가비지 컬렉터가 없지만 동일한 메모리 안전성을 제공합니다.

Rust는 소유권 시스템을 통해 메모리를 안전하게 관리합니다. 모든 값은 하나의 소유자를 가지며, 소유자가 범위를 벗어나면 자동으로 메모리가 해제됩니다. 이 시스템은 명시적인 메모리 해제를 요구하지 않으며, 메모리 누수와 같은 문제를 방지합니다.

그리고 Rust에서는 소유자가 아닌 다른 코드가 값을 사용할 수 있도록 빌림(Borrowing)을 제공합니다.

포인터의 부재

Rust에서는 전통적인 포인터 대신에 '참조'와 '스마트 포인터' 개념을 사용합니다. Rust의 참조는 소유권을 가지지 않으며, 빌림 규칙에 따라 안전하게 관리됩니다.

또한, null 대신 Rust는 존재하지 않는 값을 나타내기 위해 다양한 타입 시스템을 제공합니다.

독특한 예외 처리 방식

Rust는 예외 처리 대신 Result 타입과 Panic 타입을 제공합니다.

데이터 레이스(Data Race) 방지

코드가 컴파일 되면 더 이상 데이터 레이스가 발생하지 않습니다.

Rust 설치하기

Mac OS와 리눅스 운영체제에선 아래 명령어를 통해 설치를 진행합니다.
윈도우 사용자는 Install Rust에서 설치하면 됩니다.

MAC OS에서공식문서에서 적힌 방법으로 설치하면 다음과 같은 에러가 발생하게 됩니다.

could not amend shell profile: '/Users/jong-kyung/.bash_profile': could not write rcfile file: '/Users/jong-kyung/.bash_profile': Permission denied (os error 13)

따라서 --no-modify-path 라는 옵션을 붙여서 설치를 진행합니다.

# Mac OS or Linux
curl https://sh.rustup.rs -sSf | bash -s -- -y --no-modify-path

이후 ~/.zshrc에 cargo를 PATH에 추가해주면 정상적으로 실행됩니다.

export PATH="$HOME/.cargo/bin:$PATH"
source ~/.zshrc

Rust 유틸

  • Rustc
    • Rust 컴파일러
  • Cargo
    • 패키지 관리자이자 빌드 시스템
  • Rustup
    • 툴체인 인스톨러로, 러스트 컴파일러나 카고를 업데이트데 사용됩니다.

VSC IDE 설정

아래 rust-analyzer Extension을 설치하면 VSC에서 rust 개발을 할 수 있습니다.

Cargo Package Manager

프로젝트 생성

아래 명령어를 통해 새로운 rust 프로젝트를 생성할 수 있음 자동으로 git이 초기화 됩니다.

cargo new example # example 프로젝트 생성
cargo new --help # 명령어에 대한 옵션 조회

생성 되는 폴더구조

├── example
│   ├── .gitignore
│   ├── Cargo.toml 
│   ├── Cargo.lock
│   ├── target
│   └── src
│        ├── index.tsx
│        └── App.tsx

Cargo.toml

[package]
name = "example"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.8.5" # rand의 0.8.5버전 설치
  • rust의 의존 라이브러리 및 메타 데이터, 컴파일러 셋팅 명시됩니다.
  • rust에서는 패키지라는 명칭 대신 크레이트라는 명칭을 사용합니다.
  • https://crates.io/ 에서 필요한 크레이트를 가져올 수 있습니다.

프로젝트 빌드

cargo build # 프로젝트를 빌드한 후 바이너리로 변환

프로젝트 실행

cargo run # 프로젝트를 빌드한 후 바이너리를 실행한다.

참고
Install Rust
Rust 설치 및 개발환경 설정
MacOS에서 Rust 설치하기

profile
작은 성취들이 모여 큰 결과를 만든다고 믿으며, 꾸준함을 바탕으로 개발 역량을 키워가고 있습니다

0개의 댓글