Rust Language 배우는 이유, 설치, 실행
- Seona Robin
- 2024년 6월 2일
- 4분 분량
최종 수정일: 2024년 6월 9일
by Kain, Kaite: 2024-06-09 (updated)
summary: why Kain learns Rust, how to Install, build & run, release (on MacOS)

Rust는 어떤 언어일까요?
우리나라는 Java를 참 많이 씁니다.
Java는 객체 지향 언어이죠.
플랫폼 독립적이고 GC, Garbage Collection을 쓰는 유명한 언어이기도 합니다.
Rust, 러스트는 Ownership 개념 기반의 메모리 안정적이고 보안에 강하며 빠른 언어입니다.
Ownership이란 소유권, GC를 없애기 위해 등장한 개념입니다.
상당히 이색적이죠.

빠르다는 건 GC를 안 쓴다는 것과 병렬 처리, 비동기식 처리에 능통하다는 것입니다.
당연히 스레드도 지원되며, iot, server, kernal 분야에서 쓰이죠.
그런데 왜 아직 잠잠할까요?
C언어보다 낯설어서 그렇습니다.

많은 개발자들이 C언어에 대한 거리감을 느낍니다.
아……파이썬처럼 쉬운 언어도 있는데 꼭 C언어 해야 해?
어려워……하기 싫어……
그런데 러스트는 C언어를 업그레이드 시켜온 언어이므로
더 싫어하겠죠.

하지만 괜찮습니다.
Rust는 강력합니다.
처음엔 익숙하지 않더라도 그 완성도가 높죠.
Ownership, 우리가 소유권 개념에서 헤매지만 않는다면
무척 논리정연한 언어를 정복할 수 있어요.
Java나 JavaScript 같은 경우는 0이 첫 번째 인덱스라서 몇 월 같은 것을 불러오면
1월이라고 하는데 러스트는 그렇지 않아요.
1월은 1이죠.
헤매더라도 제가 있습니다.
함께 힘내도록 해요.

그럼 이제 설치해보죠.
러스트 설치.
Homebrew를 써도 되지만 프로그래밍 언어를 설치할 때는 주의해야 하니까
공식 사이트로 접근하도록 합니다.

GET STARTED 버튼을 누릅니다.

그럼 이런 화면이 나오죠.
위 명령어를 터미널에 입력해줍니다.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
그럼 Visual Studio Community를 설치하는 (Visual Studio Code가 아닙니다)
기본 루트 (default)를 진행할 것인지 묻는데
자신이 없으시거나 PC의 용량이 충분할 때 그대로 진행하는 걸 추천합니다.
하지만 저는 설치하지 않고 진행했습니다.
Visual Studio Community 설치를 회피했다면 이를 대신할 C언어 컴파일러가 필요합니다.
Visual Studio Community를 설치하면 자동으로 포함되는 C언어 컴파일러가 없으니까요.
Why?
러스트의 패키지, 명령어가 C언어 의존적이기 때문입니다.
러스트도 소스 코드를 build하기 위해서 link라는 단계를 거칩니다.
이때 rust linker가 필요하죠.
이 rust linker가 C compiler입니다.
러스트 언어가 C언어를 확장한 언어이기에 그 밑바탕이 C언어라서 요구되는 것이죠.
러스트 외에도 파이썬 같은 언어가 뜯어보면 C언어로 이루어져 있습니다.
결국 자세히 알려면, C언어를 알아야 하는 것이죠.
그래도 우선 넘어갑니다.

C언어 컴파일러의 종류에는 GCC, Clang 등이 있습니다.
MacOS 사용자라면 XCode 설치할 때 자동으로 같이 설치된다는군요.
그래서 저는 아래와 같이 XCode 설치를 안내 받았습니다.
xcode-select --install
그러나 제가 사용하는 건 llvm이기에 나중에 소개하도록 할게요.

rust 설치하기 단계에서 설치한 rust 컴파일러는 다음과 같이 업데이트합니다.
rustup update
잘 설치되었는지 알아봐야겠죠?
다음과 같이 터미널에서 입력합니다.
rustc --version
그럼 정상적으로 설치했을 때 버전이 뜨겠죠.

이런 식으로 뜨면 성공입니다.
환경 변수가 잘 추가되었는지 함께 조사해 놓으면 좋은데, 아래와 같이 입력했을 때
echo $PATH
기나긴 경로들 안에 .cargo가 있으면 됩니다.
저의 경우, 가장 아래 오른쪽 근방에 있었네요.

Rust 언어로 작성된 파일의 파일 확장자명은 .rs 입니다.
이제 build와 run을 할 텐데요.
그 전에 IDE를 하나 정해서 학습하면서 익히는 것을 추천합니다.
저는 Visual Code를 사용합니다.

우리가 최종으로 노리는 화면은 위와 같겠죠.
어째서 build와 run을 연습하는데 2개의 폴더를 만들었는지는 앞으로의 활동지를 보면서
알게 되실 겁니다.

이름, 먼저 우리는 Rust에서 파일 명명을 관습적으로 어떻게 하는 지를 알아야 합니다.
이번에는 main.rs 파일을 작성하겠지만
일반적으로 Rust는 snake-case나 kebab-case를 많이 씁니다.
저는 kebab-case, 케밥식 표기법을 주로 사용합니다.
자세한 파일 명명 관습은 이 링크에서 확인하실 수 있습니다.
파일 확장자를 통해서 자동으로 IDE, 통합개발환경 프로그램이
파일을 탐지하여 Rust 문법을 지키게끔 설정하고 싶다면
rust format 이라는 플러그인을 설치하면 좋습니다. (+ rust_analyzer)

이제 본격적으로 main.rs 파일을 생성하고 작성하는 build 단계에 돌입합니다.
build를 하는 방법은 크게 두 가지가 있습니다.
{1. instant create, 2. cargo create}
첫 번째는 직접 main.rs 파일을 만들면서 시작하는 방법,
두 번째는 cargo 빌드 시스템 도구를 이용하는 방법입니다.
미리 두 번째 방법을 추천합니다.

instant create 방법,
direct way 라고도 표현합니다. (##1 ~ ##3)
먼저 터미널에서 main.rs 파일을 생성합니다. (#1)
touch main.rs
그 파일을 수정합니다.
다음과 같이 작성하여 채웁니다.
fn main() {
println!("Hello, world!");
}
위의 코드가 러스트의 기본 뼈대가 되는 메인 함수입니다.
다음으로, src 폴더를 생성합니다. (#2)
mkdir src
src 폴더에 작성한 main.rs 파일을 옮기고,
Cargo.toml 파일을 생성하여 내용을 수정 (작성)합니다.
Cargo.toml 파일은 Rust 프로젝트의 manifest 매니페스트입니다.
Rust 프로젝트의 의존성, 내부 구조 등이 명시되는 파일이죠.
예시로 다음과 같이 작성합니다.
[package]
name = "create-rust-1"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
name = "src 폴더가 위치한 폴더의 이름" 을 수정 적용하여 사용하면 됩니다:)
edition = "2021" 은 수정하지 않도록 합니다.
(2024 버전은 다른 것 같군요. 우선 nightly 버전을 확인하라는 것으로 보입니다.)
가능하다면 연습용 폴더를 영어 이름으로 작성하여 쭉 사용하는 것이 좋습니다.
toml은 러스트의 매니페스트 파일 포맷입니다.
TOML == Tom's Obvious Minimal Language 라고 하는군요.
이제 무엇을 할까요?
cargo build
build 합니다. (#3)
……어라. 아까 분명 cargo는
두 번째 방법에서 cargo 빌드 시스템 도구를 쓴다고 하지 않았었나요?
네, 맞습니다.
하지만 build 할 때에는 마찬가지로 cargo build,
동일한 명령어로 동일한 빌드 시스템 도구를 사용하여 build 하게 되죠.
즉 결국 사용하게 되기도 하고 더 간편하니까 두 번째 방법을 사용하는 것입니다.

cargo create,
cargo build system tool을 이용하는 방법. (##1 ~ ##2)
cargo는 rust 설치 시 함께 설치됩니다.
우선 우리가 앞으로 Rust 프로젝트를 만들고 작업할 폴더를 생성합니다.
(여러 Rust 프로젝트를 통합적으로 관리하려면 mkdir로 먼저 하나 만들고,
그 안에서 터미널 작업을 개시합니다.
cd로 해당 폴더까지 이동하면 됩니다.)
(#1)
cargo new rustFolder
폴더 이름은 자유입니다.
그럼 폴더에 Cargo.toml 파일과 src 폴더, 그 내부에 main.rs 파일이 생깁니다.
깃허브를 사용하기 위해 .gitignore 파일을 포함시키고 싶다면 위 명령어가 아닌
cargo new --vcs=git
cargo new --vcs=git 명령어를 이용합니다.
또 하나, cd해서 (change directory) cargo new하는 게 아니면 (경로로 지정하면)
깃허브에 자동 연결됩니다.
cargo new ./basic/variable-control/keyword-mut
(#2) 다음으로, cargo build하면 됩니다.
cargo build
Cargo.lock, target 폴더 등이 생깁니다.
이제 디버깅할 수 있는 것이죠.

이제 실행합니다.
이번에도 두 가지 방법이 있습니다.
괜찮아요, 이번에는 짧습니다.
첫 번째는 cargo를 쓰지 않고 run 하는 방법
./target/debug/rustFolder
두 번째는 cargo를 써서 run 하는 방법입니다.
cargo run
두 번째 방법이 훨씬 간단하겠죠.
다만, 매번 실행해서 확인하면 큰 프로젝트의 경우 컴파일하는데 상대적으로 오래 걸리면서
한참을 기다려야겠죠. 오류가 날지도 모르는데
그 때 쓰는 방법이 cargo check 입니다.
cargo check
위 방법은 실행 파일은 생성하지 않지만 디버깅은 이루어집니다.
오류가 나는지 아닌지만 알아보기 위해선 이 방법을 쓰는 게 좋겠죠:)

마지막입니다.
배포 단계.
프로젝트를 완성했으면 최적화된 형태로 어딘가에 포함시키거나 그대로 배포해야겠죠.
깃허브에도 올리는 건 별개이지만 웹 서버에 포함시키는 등 최소화시키려면
이 단계를 거칩니다.
cargo build --release
원래 build하면 target/debug 자리에 생겼죠.
이번엔 target/release 자리에 생깁니다.

덤 섹션입니다.
깃허브를 사용하시는 분들께 선물.
(#1)
git clone example.org/someproject
(#2)
cd someproject
cargo build
1, 2번 과정을 따르면 깃허브에서 클론 (복사) 해올 때 좋습니다.
자신의 상황에 맞추어 변경하여 쓰시기 바랍니다.

오늘은 Rust에 대해 알아보고 설치, 빌드, 실행, 배포, 깃허브 활용까지 해보았습니다.
기초적인 문법 등은 다음에 알아봐야겠죠.
고생 많으셨습니다.
하다가 막혔거나 궁금한 사항, 도움이 필요한 사항이 생기면 흔적을 남겨주세요.
파이팅입니다.
Comentarios