잡학(雜學)

Rust 1장. Hello World!

쪼랩전사 2021. 6. 12. 19:14
728x90

누군가에게 사상 주입을 당한 것 같긴 한데, 모든 언어의 시작은 Hello World부터다.

이 장에서는 Rust로 작성한 Hello World에 관해서 설명하겠다.

 

새로운 패키지를 만들기 위해서 Rust에서는 Cargo 사용을 권장(혹은 추천)한다.

 

$ cargo new rust_hello

 

위의 명령어는 "rust_hello"라는 이름의 새로운 패키지를 생성하는 명령어이며,

아래와 같은 디렉터리와 파일이 생긴다.

 

rust_hello
├── Cargo.toml
└── src

            └── main.rs

 

Cargo.toml 파일은 매니페스트 파일이라고도 불리며, 간단히 말하면 해당 패키지를 위한 메타데이터 파일이다.

파일의 내용은 아래와 같다.


[package]
name = "rust_hello"
version = "0.1.0"
authors = [""]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[package] 섹션은 패키지 자체의 설명이 들어가며, 패키지의 이름, 버전 등의 내용이 들어가게 된다.

하지만, 이 부분은 배포를 목적으로 하지 않는 이상 건드릴 일이 없으므로 설명은 넘기겠다.

 

[dependencies] 섹션이 가장 많이 쓰일 부분이며, 패키지를 구성하는 의존성 패키지를 여기에 기술할 수 있다.


[dependencies]
time = "0.1.12"
rand = { git = "https://github.com/rust-lang-nursery/rand" }

위와 같이 패키지들을 지정할 수 있으며,

단순히 time = "0.1.12"라고 하면, https://crates.io/ 에서 time이라는 패키지의 0.1.12 버전을 가져오게 되고,

rand처럼 git 주소를 기입하면, 해당 git 주소로부터 rand 패키지를 가져오게 된다.

이 외에도 다양한 방식이 있으나, 위의 두 가지 정도만 알면 된다.

 

src/main.rs


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

위 파일은 cargo new 명령어를 통해 자동으로 생성되었음을 다시 한번 알린다.

우리는 누군가에게 Hello World가 첫 입문이라고 조종당하는 건가 싶다.

 

러스트 소스 코드 파일은 위와 같이 .rs 라는 확장자를 가진다.

또한, Java나 C 언어처럼 main 함수를 가지며, 함수라는 것을 지칭하기 위해서 fn 이라는 키워드를 사용한다.

 

출력을 위해서는 println! 이라는 것을 사용한다.

이때 ! (Bang이라고 불린다.) 는 특수한 키워드로 매크로를 호출할 때 사용된다.

즉, println! 는 println 이라는 매크로를 호출하는 것이다.

 

C 언어는 매크로 함수와 일반함수 사용 방법이 같다.

이 때문에 호출하는 것만으로는 매크로 함수인지, 일반 함수인지 구분할 수 없다.

물론, 매크로 함수의 이름은 대문자로 써라, 일반 함수 이름은 소문자로 써라. 같은 관습으로 구분이 되기도 하지만, 그 관습을 지키고 안 지키고는 사용자의 마음이라 애매한 부분이 있다.

 

rust에서는 이러한 애매함을 언어적 문법을 통해 해결하고자 한 것이 아닌가 싶다.

 

해당 패키지를 실행하기 위해서는 아래와 같은 명령어를 사용하면 된다.


$ cargo run
Compiling rust_hello v0.1.0 (/path/to/workspace/rust_hello)
    Finished dev [unoptimized + debuginfo] target(s) in 0.38s
     Running `target/debug/rust_hello`
Hello, world!

자 우리는 Rust를 이용해 Hello world를 출력하는 방법에 대해 배웠다.

시작이 반이라는 누군가의 명언이 있었으니, 우리는 절반을 해낸 것이다.

 

'잡학(雜學)' 카테고리의 다른 글

Rust 2장 - 2. 기본 데이터 타입  (0) 2021.06.17
Rust 2장 - 1. 변수와 상수  (0) 2021.06.15
억지 기법  (0) 2021.06.13
프로그래밍 언어  (0) 2021.05.23
RabbitMQ  (2) 2021.05.14