Rust는 시스템 프로그래밍 언어로, 메모리 안전성
과 성능
을 중시하며, 주로 낮은 수준의 프로그래밍에 적합합니다. Rust는 런타임이나 가비지 컬렉터 없이 메모리 안전성을 제공하는 대표적인 언어입니다. Mozilla에서 개발하였고, 2010년에 처음 공개되었습니다.
크로미움 프로젝트에서 보안 취약성에 대해 발표한 보고서를 따르면 심각한 보안 이슈의 70%가 메모리와 안전 문제였다고 합니다.
다른 언어들은 가비지 컬렉터를 사용하는 반면, Rust는 가비지 컬렉터가 없지만 동일한 메모리 안전성을 제공합니다.
Rust는 소유권 시스템
을 통해 메모리를 안전하게 관리합니다. 모든 값은 하나의 소유자를 가지며, 소유자가 범위를 벗어나면 자동으로 메모리가 해제됩니다. 이 시스템은 명시적인 메모리 해제를 요구하지 않으며, 메모리 누수와 같은 문제를 방지합니다.
그리고 Rust에서는 소유자가 아닌 다른 코드가 값을 사용할 수 있도록 빌림(Borrowing)
을 제공합니다.
Rust에서는 전통적인 포인터 대신에 '참조'와 '스마트 포인터' 개념을 사용합니다. Rust의 참조는 소유권을 가지지 않으며, 빌림 규칙에 따라 안전하게 관리됩니다.
또한, null 대신 Rust는 존재하지 않는 값
을 나타내기 위해 다양한 타입 시스템을 제공합니다.
Rust는 예외 처리 대신 Result
타입과 Panic
타입을 제공합니다.
코드가 컴파일 되면 더 이상 데이터 레이스가 발생하지 않습니다.
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-analyzer Extension을 설치하면 VSC에서 rust 개발을 할 수 있습니다.
아래 명령어를 통해 새로운 rust 프로젝트를 생성할 수 있음 자동으로 git이 초기화 됩니다.
cargo new example # example 프로젝트 생성
cargo new --help # 명령어에 대한 옵션 조회
생성 되는 폴더구조
├── example
│ ├── .gitignore
│ ├── Cargo.toml
│ ├── Cargo.lock
│ ├── target
│ └── src
│ ├── index.tsx
│ └── App.tsx
[package]
name = "example"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.8.5" # rand의 0.8.5버전 설치
cargo build # 프로젝트를 빌드한 후 바이너리로 변환
cargo run # 프로젝트를 빌드한 후 바이너리를 실행한다.