[Rust] Let’s `Hello World`

시작이 반이다

Kwoncheol Shin
4 min readMar 7, 2019
photo by Zeenat Bayat on Flickr

설치

Linux, mac OS에서 Rust 설치하기

리눅스, mac os는 터미널에서 아래의 명령을 입력해 간단하게 설치할 수 있다.

$ curl https://sh.rustup.rs -sSf | sh

설치 도중 데스크톱 계정 비밀번호를 물어볼 수도 있다.

다음과 같은 문장이 출력되면 설치가 정상적으로 완료된 것이다.

Rust is installed now. Great!

인스톨과정에서 환경변수를 자동으로 등록하기 때문에 따로 등록해주지 않아도 된다.

하지만 이는 터미널을 재시작 했을때 반영되므로 터미널을 재시작 하고싶지 사람은 다음과 같이 수동으로 환경변수를 추가하는 방법도 있다.

$ source $HOME/.cargo/env

아래와 같이 해도 무방하다.

$ export PATH="HOME/.cargo/bin:$PATH"

설치가 정상적으로 됐는지 확인하기 위해 터미널에서 다음과 같이 입력해보자.

$ rustc --version

만약 다음과 같은 형식의 출력이 나온다면 축하한다! 설치가 완료됐다.

rustc x.y.z (abcabcabc yyyy-mm-dd)

만약 윈도우에서 위와 같은 문구가 나오지 않는다면 시스템 환경변수를 체크해봐라. 만약 환경변수도 문제가 없는데 저런다면 Mibbit을 통해서 Rust IRC channel로 들어가 도움을 청해보자.

Hello Rust!

자 이제 Hello World를 외쳐 볼 차례다. 우선 Rust 튜토리얼의 코드들을 저장할 폴더를 만들어 놓자.

$ mkdir ~/rust_tutorial

이제 폴더 내부에 rust 코드 파일을 만들자. rust의 확장자는 .rs이다. main.rs라는 파일을 만들고 다음과 같이 입력해보자.

작지만 큰 도약..

Rust의 파일네임 컨벤션은 파이썬과 유사하다. 소문자로 작성하며 단어와 단어사이는 언더바_ 로 구분해준다. 파일명이 hello world라면 hello_world.rs 이렇게 해주면 된다.

이제 터미널로 다시 돌아가 해당 폴더에서 다음과 같이 입력해보자.

$ rustc main.rs
$ ./main
>> Hello, world!

위와 같이 헬로월드가 출력되면 👏🏻 축하한다. 당신은 오늘부터 Rust 개발자다!

우리의 귀여운 Rust가 어떻게 Hello world를 출력한 것인지 살짝 알아보자.

C나 C++, Java에서 그러듯 Rust에서도 main함수는 특별하다. main함수는 실행가능한 Rust 프로그램의 진입점 역할을 한다.

메인함수 안쪽에는

    println!("Hello, world!");

와 같이 입력해주었다. 여기서 언급할 것이 네 가지 있다.

  1. Rust는 들여쓰기스페이스*4개를 사용한다.(Tab이 아니다!)
  2. println! 은 rust의 매크로를 호출한다. 만약 매크로가 아니라 함수를 호출하려면 println 이라고만 써줘야한다. 매크로에 대해서는 좀 더 배운 다음에 알아볼 것이다. 지금 우리는! 를 쓰는 것이 함수가 아닌 매크로를 쓰겠다는 의미라는 것만 알아두어도 좋다.
  3. println 은 문자열을 파라미터로 받아 화면에 출력해주었다.
  4. 코드의 라인은 ; 을 이용해 끈맺었다. 이렇게 해줌으로 다음 라인과 구별 가능하게 해준다.

컴파일과 실행은 분리돼있다

Rust 프로그램이 실행되기 전에 rustc 명령어를 이용해 이를 꼭 컴파일해줘야한다.

$ rustc main.rs

위에 보이는 것이 컴파일 요청 명령어다. 컴파일이 완료됐다면 Rust는 실행파일을 반환한다. 위 명령어를 실행했던 폴더에 어떤 파일이 생겼는지 확인해보자.

$ ls
>> main main.rs

우리가 만든 파일은 main.rs 밖에 없었는데 main 이라는 파일이 새로 생겼다. 확장자가 없는 main 은 실행 가능한 파일로 다음과 같이 파일명을 입력하면 프로그램이 실행된다.(원도우에서는 main.ex)

$ ./main
>> Hello, world!

Ruby, python, javascript와 같은 동적프로그래밍에 익숙한 사람들이라면 이 과정이 조금 생소할 수도 있다. 위와 같은 언어들에서는 컴파일/실행 과정이 합쳐져있다. 때문에 한번의 명령만으로 컴파일과 실행을 끝낼 수 있지만 이를 실행하기 위해서는 각각 언어의 엔진이 필요하다. (e.g. javascript의 node)

하지만 Rust에서는 컴파일과정을 거친 프로그램을 갖고 있다면 Rust 설치유무와 상관없이 어디서든 그 프로그램을 실행할 수 있다.

간단한 프로그램이라면 rustc 컴파일하는 것만으로 충분하다. 하지만 사이즈가 커지면 환경설정이나 프로세스를 조금 더 단순하게 만들 필요가 있다.

이를 위해 Cargo라는 도구를 사용할 것이다!

To be continued…

--

--