해당 게시판에 올라오는 포스트는 The Rust Programming Language 의 한글 텍스트 버전을 보며 작성된 학습 게시판입니다.
러스트(Rust) 프로그래밍 언어는 권한 부여에 근간을 두고 있다. 그러니까, 저수준 제어를 하기에 편리하면서도 메모리 관리, 병렬 처리 등 에 동반되는 귀찮은 것들 없이 쉽게 제어할 수 있는 장점이 있다는 것이다. 공부하면서 제일 놀라웠던 점은 포인터를 다루면서도 포인터에 대한 메모리 관리를 안해줘도 된다는 것이다. 자세한 내용은 차근차근 적어 내려갈 것이다.
전체 목차
[코딩/Rust] - [Rust] 1장 안정성 높은 언어
[코딩/Rust] - [Rust] 2장 일반적인 프로그래밍 개념
[코딩/Rust] - [Rust] 3장 러스트만의 특이함
[코딩/Rust] - [Rust] 4장 열거형(Enum), 모듈화(Module)
[코딩/Rust] - [Rust] 5장 컬렉션(Collection) - 벡터(Vector), 문자열(String), 해시맵(HashMap)
글 목차
1. rustup 설치
Windows
https://www.rust-lang.org/tools/install 에서 "RUSTUP-INIT.EXE" 를 다운로드 받고, 실행 시켜야 한다. 설치 과정에서 Visual Studio 2013 버전 이상의 MSVC 빌드 도구가 필요하다는 메시지가 나타날 것이다.
빌드 도구를 설치하려면 Visual Studio 2022를 설치할 필요가 있다. 구체적으로는 아래와 같은 패키지가 필요하다
- 'C++ 데스크톱 개발'
- Windows 10 혹은 11 SDK
- 영어 언어팩과 여러분이 선택하고 싶은 다른 언어팩
Linux 및 maxOS
터미널을 열고 다음 명령어를 입력해야 한다. 이는 최신 stable 버전 러스트를 설치하는 데 사용할 rustup 도구를 설치하는 명령어이다.
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
설치가 완료되면 다음 문장이 나타난다.
Rust is installed now. Great!
업데이트 및 삭제
rustup 으로 러스트를 설치했다면 최신 버전 업데이트도 간편하다. 셸에 다음 명령어를 입력하면 된다.
$ rustup update
rustup 과 러스트를 삭제하는 방법은 다음과 같다.
$ rustup self uninstall
2. 지긋지긋한 Hellow, World!
"Hello,World!" 가 맞다는 건 다들 알 것이라 생각한다.
프로젝트 디렉터리 생성
명령어로 생성하려면 다음과 같이 진행하면 된다.
Linux, maxOS, Windows PowerShell에서는 다음 명령어를
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
Windows CMD 사용자는 다음 명령어를 입력해야 한다.
> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
> cd hello_world
러스트 프로젝트 또한 다른 언어 프로젝트와 동일하게 굳이 지정된 폴더안에서 작업할 필요 없다. 본인은 git 관리를 편하게 하기 위해 애초부터 Github 폴더에 프로젝트를 생성하고 바로 .gitignore 파일 부터 생성했다.
사실 명령어 작성보다 GUI를 제공하는 IntelliJ IDEA 를 사용하는 것이 마음 편하다. Jetbrain 에서 제공하는 RustRover(beta) 가 있긴 하지만, 다중 커서 지원을 아직 하지 않아서... 손에 익은 IntelliJ 가 훨씬 편하더라.
앞으로는 Windows - IntelliJ IDEA Ultimate 를 기준으로 설명하겠다.
실행 해보자
프로젝트를 실행하면 다음과 같이 파일들이 생성된다.
[프로젝트이름]
├src
│ └main.rs
└Cargo.toml
프로젝트 디렉터리 안에 /src 폴더 내에 main.rs 소스 파일을 수정한다. C언어와 유사하게 프로그램을 실행하면 main 함수가 실행이 되나, 차이점은 파일명 또한 main 이어야만 정상적으로 프로그램 실행을 할 수 있다.
//파일명:main.rs
fn main() {
println!("Hellow, World!");
}
디버깅을 하게 된다면, 곧 바로 하단 터미널에서 실행이 된다. /target 폴더 내에 /debug 폴더가 생기며 그 안에 프로젝트 이름으로된 .exe 파일이 실행된 프로그램이다. 터미널에서 실행된 결과와 exe 파일을 직접 실행한 결과는 동일하다.
설명
러스트는 함수(메소드, method)를 fn 이라는 예약어를 사용하여 선언한다.
함수를 호출 할 때에는 평범하게 함수 이름을 호출한다. 대신 뒤에 뜬금없이 !가 붙어 있는 경우, 이는 매크로 호출 코드이다. 매크로는 추후에 공부할 예정이며 매크로는 함수와 항상 같은 규칙을 따르지 않는 다는 것만 알면 된다.
러스트는 C와 유사하게 명령어 라인은 세미콜론(;)으로 끝난다.
카고(Cargo)
의존성을 추가하기 위해 존재하는 편리한 도구이다. {프로젝트 이름} 부분에 프로젝트 생성할 때 작성했던 이름이 자동으로 들어가 있다.
# 파일명:Cargo.toml
[package]
name = "{프로젝트 이름}"
version = "0.1.0"
edition = "2021"
[dependencies]
[package] 라고 적힌 첫 번째 라인은 섹션 헤더이다. 이 뒤로 패키지 설정 구문들이 따라온다.
마지막 라인의 [dependencies] 는 프로젝트에서 사용하는 의존성 목록이다.
러스트에서는 코드 패키지를 크레이트(crate) 라고 부른다.
3. import 와 include 대신 use
모듈이나 아이템 집합을 가져올 때에, 마치 C++ 에서 using namespace 하는 것과 유사하다 생각한다.
러스트는 기본적으로 표준 라이브러리에 정의된 아이템 집합을 바로 호출할 수 있으나, 원하는 집합이 없다면 use 문을 활용하여 명시적으로 가져와야 한다. std 라 불리는 표준 라이브러리는 다음과 같이 가져온다.
use std::*;
당연하게도 애스터리스크(*, 스타, 별표) 는 해당 라이브러리 내 선언된 모든 집합을 가져온다는 뜻이다.
입출력 라이브러리만을 가져오려면 다음과 같다.
use std::io;
추후 사용할 다른 라이브러리들 또한 이와 같이 호출하면 된다. 다만, 표준 라이브러리가 아닌 외부 라이브러리의 경우 .toml 파일에서 의존성을 추가한 이후에 해당 라이브러리를 다운로드 받고 나서야 .rs 파일에서 집합을 가져올 수 있다.
'코딩 > Rust' 카테고리의 다른 글
[Rust] 5장 컬렉션(Collection) - 벡터(Vector), 문자열(String), 해시맵(HashMap) (0) | 2024.03.16 |
---|---|
[Rust] 4장 열거형(Enum), 모듈화(Module) (1) | 2024.03.15 |
[Rust] 3장 러스트만의 특이함 (1) | 2024.03.08 |
[Rust] 2장 일반적인 프로그래밍 개념 (1) | 2024.03.06 |