[01. 준비 과정] - Hello, World

Kurt·2023년 9월 2일

[Rust Language]

목록 보기
3/24
post-thumbnail

개요

Rust 설치 이후 Hello, World를 출력하는 짧은 코드를 작성하는 전통적인 시간


프로젝트 디렉터리 생성

"Hello, World" 출력을 위한 디렉터리 생성

시나리오

  1. /home/kurt 디렉터리 아래 Rust라는 디렉터리 생성
  2. 해당 디렉터리 아래 projects/hello_world 디렉터리 생성
  3. tree로 디렉터리 확인
# /home/kurt 디렉터리 아래 Rust라는 디렉터리 생성
$ mkdir /home/kurt/Rust

# 해당 디렉터리 아래 projects/hello_world 디렉터리 생성
$ mkdir -p /home/kurt/Rust/projects/hello_world

# tree로 디렉터리 확인
$ tree /home/kurt/
/home/kurt/
└── Rust
    └── projects
        └── hello_world

Rust 프로그램 작성 및 실행

러스트의 파일 확장자는 .rs 이며, Rust는 snake case를 사용하는 것이 관례라고 한다..

작성 시나리오

  1. 작업 디렉터리로 이동
  2. main.rs 파일 생성
  3. hello, world 코드 작성
# 작업 디렉터리로 이동
$ cd /home/kurt/Rust/projects/hello_world/

# main.rs 파일 생성
$ touch main.rs

# hello, world 코드 작성
$ cat main.rs
fn main() {
    println!("Hello, world!");
}

실행 시나리오

  1. 컴파일
    rustc 명령을 이용하여 컴파일
  2. 실행
# 컴파일
$ rustc main.rs
error: linker `cc` not found
  |
  = note: No such file or directory (os error 2)

error: aborting due to previous error

위와 같이 'cc' not found 오류 발생 시 gcc 패키지를 추가하여 작업한다

$ dnf install gcc
$ rustc main.rs
$ ls
main  main.rs

# 실행
$ ./main
Hello, world!

코드 해석

'Hello, World!'를 출력하는 과정에 대한 설명

fn main() {

}

Rust는 (1)fn으로 함수를 선언하며, (2)함수 이름 뒤에 (3)괄호'()'의 형식으로 되어있고, 중괄호'{}'는 컴파일러에게 함수의 시작과 종료 지점을 알려준다
이때 파라미터가 존재한다면, (3)괄호'()'기호 안에 위치한다

main 함수 내에는 다음과 같은 코드가 존재한다

    println!("Hello, world!");

위 한줄이 해당 코드의 모든 동작을 하며, 스크린에 텍스트를 출력하게 된다

네가지 주목할 부분

  1. Rust 스타일은 탭으로 들여쓰는 것이 아니라 네 개의 스페이스로 들여쓴다.
  2. println!은 Rust macro라고 불린다. 함수라고 불리려면,(!없이) println으로 입력되어야 한다.(Rust macro에 대한 설명은 추후 진행한다고 함)
    지금은 !이 보통의 함수 대신 매크로를 호출하고 있음을 의미함을 알아두면 된다
  3. "Hello, world!"는 스트링(string)이며, 우리는 이 스트링을 println!의 인자로 넘긴다
  4. 마지막에 세미콜론(;)으로 끝나게 되는데, 이는 이 표현식이 끝났고 다음 것을 시작할 준비가 되었음을 나타낸다 대다수의 Rust 코드 라인들이 세미콜론으로 끝난다

컴파일

위 시나리오에서 구분했던 것 같이 컴파일과 실행은 개별적인 단계이다
우리는 다음 명령어로 소스코드를 컴파일 하게 된다.

$ rustc main.rs

위 방식은 gcc 혹은 clang과 유사하다고 하며, Rust는 컴파일을 성공적으로 한 뒤 실행 가능한 바이너리를 출력한다.
Python, Ruby, JS같은 동적 언어를 사용하면 컴파일과 실행을 개별적인 단계로 하지 않았을 것이다.
Rust는 ahead-of-time compiled 언어인데, 이는 어떠한 실행 파일을 사용하기 위해서 Rust를 사용하지 않아도 이를 실행할 수 있다는 의미이다.
해당 기능을 이용하기 위해서 Cargo라는 도구를 사용하는데 다음장에 설명을 이어서 진행한다


현재 시리즈는 다음 링크를 공부한 내용을 기록하고 있습니다.
> The Rust Programming Language <


profile
내 인생이라는 프로젝트의 최고 버전을 만들기 위해

0개의 댓글