ABOUT ME

구르미의 개발 블로그입니다. 개발, Devops 관련 포스팅을 주로 다루고 있습니다.

Today
Yesterday
Total
  • 러스트 시작하기
    프로그래밍 언어/rust 2025. 4. 12. 21:23
    반응형

    💡 이 문서는 The Rust Programming Language를 보고 재구성하였습니다.

    러스트 설치하기

    러스트를 설치하기 위해서 rustup CLI 도구를 설치합니다. rustup 도구는 러스트 컴파일러인 rustc , 파일을 깔끔하게 코드 스타일을 관리할 수 있는 포매터 rustfmt, 그리고 라이브러리 의존성을 관리할 수 있는 cargo 등의 도구들이 모두 들어있기 때문에 간편하게 러스트 개발 환경을 구성할 수 있습니다.

    리눅스 및 맥 환경에 설치하기

    다음 명령어를 입력하여 설치합니다.

    $ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

    설치가 완료되면 다음 문구가 나타납니다.

    Rust is installed now. Great!

    ⚠️ 이 단계에서 C 컴파일러 설치가 필요할 수 있습니다!
    러스트 링커의 경우, 기본으로 설치됩니다. 그러나, 컴파일 시 실행할 수 없다는 에러가 나타날 수 있습니다. 이 경우에, 각 운영 환경에 맞는 C 컴파일러가 필요합니다.

    리눅스:
    일반적으로 `gcc` 나 `Clang` 이 설치되어 있습니다. 만약 설치되지 않은 경우 우분투의 `build-essential` 같은 기본 패키지를 재설치하면 컴파일러를 설치할 수 있습니다.

    맥:
    다음 명령어로 설치할 수 있습니다.

    $ xcode-select --install

     

    업데이트 및 설치

    다음 명령어들로 rustup 을 업데이트 및 삭제할 수 있습니다.

    업데이트:

    $ rustup update

     

    삭제:

    $ rustup self uninstall

    Hello World!

    💡 적절한 코드 에디터 혹은 IDE를 설치하세요!
    이 절을 진행하기 이전에, 러스트 개발하기 좋은 코드 에디터 혹은 IDE를 설치해주세요. 대표적인 코드 에디터로는 `VSCode`, `Cursor AI` , `Wind Surf` 가 있고, IDE로는 `RustRover` 가 있습니다.

    Hello World!란 프로그래밍 언어를 배울 때, 관례적으로 만드는, 단순히 Hello World!라는 문자열을 출력하는 프로그램입니다.

    프로젝트 디렉토리 생성하기

    먼저 다음 명령어를 이용하여 프로젝트를 생성하세요!

    # 프로젝트 모음 디렉토리 생성
    $ mkdir ~/projects
    
    # 프로젝트 모음 디렉토리로 이동
    $ cd ~/projects
    
    # Hello World! 프로젝트 생성
    $ mkdir hello_world
    
    # Hello World! 프로젝트 이동
    $ cd hello_world

    러스트 프로그램 작성하고 실행하기

    이제 main.rs 를 다음과 같이 작성합니다.

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

     

    그 후, 터미널에 다음을 입력하여, “컴파일”합니다.

    $ rustc main.rs

     

    그럼 프로젝트 디렉토리 내에 main 이라는 실행 파일이 생성됩니다.

    $ ls
    main    main.rs

     

    다음과 같이 우리가 생성한 프로그램을 실행할 수 있습니다.

    $ ./main
    Hello, World!

    러스트 프로그램 뜯어보기

    먼저 살펴볼 부분은 다음과 같습니다.

    fn main() {
        // ...
    }

    이 부분은 러스트에서 main 함수를 정의한 것입니다. 일반적으로 main 함수는 특별한 함수로써 실행 프로그램에서 가장 먼저 실행되는 부분입니다. 여기서는 프로그램 실행 매개 변수를 아무것도 받지 않았지만, 매개 변수를 받고 싶다면 () 이 부분에 매개 변수를 작성해야 합니다.

     

    러스트에서 함수 본문은 항상 {} 로 감싸주어야 합니다. 이제 main 함수 내 코드를 살펴봅시다.

        println!("Hello, World!");

     

    위 코드가 실제 로직인 Hello, World! 를 출력하는 코드입니다. 대표적으로 세가지만 살펴봅시다.

     

    먼저 println! 은 매크로입니다. 여기서는 호출 부에 ! 가 붙은 건 매크로라고 알아둡시다. 이 매크로는 () 안의 문자열을 출력합니다.

     

    두 번째는, "Hello, World!" 는 문자열 리터럴입니다. 리터럴이란 일반적으로 고정된 값을 의미합니다. 숫자나 문자(’’), 문자열(””)이 대표적인 리터럴입니다.

     

    마지막으로 러스트는 모든 표현식 뒤에 ; 붙여야 합니다. 러스트 코드의 거의 모든 라인이 이 문자로 끝난다는 것을 알아두세요.

     

    Hello Cargo!

    이번에는 cargo 를 이용하여 러스트 애플리케이션을 만들어보겠습니다. cargo 란 러스트의 빌드 도구이자 패키지 매니저입니다. 간단한 프로그램이라면, “Hello World!” 프로젝트처럼 간단하게 러스트 코드를 작성하고 rustc 로 컴파일 후 실행해도 좋습니다. 하지만 애플리케이션이 복잡해질수록 cargo 를 이용하는 것을 권장드립니다. 이 도구는 코드 빌드나, 코드 작성에 필요한 외부 라이브러리를 다운로드할 때나, 라이브러리를 제작할 때 겪는 귀찮은 일들을 상당수 줄여주는 편리한 도구입니다

    카고로 프로젝트 생성하기

    먼저 프로젝트 모음ㅁ 디렉토리로 이동합니다.

    # 프로젝트 모음 디렉토리로 이동
    $ cd ~/projects
    

    프로젝트 모음 디렉토리에서 현재 생성된 프로젝트 목록을 확인해보겠습니다.

    # 프로젝트 목록 확인
    $ ls 
    hello_world
    

    이제 cargo 로 프로젝트를 생성해봅시다. 다음 명령어를 입력해주세요.

    # cargo로 프로젝트 생성
    # cargo new <프로젝트 이름>
    $ cargo new hello_cargo    
    

    다시 프로젝트 목록을 확인해봅시다.

    # 프로젝트 목록 확인
    $ ls 
    hello_cargo  hello_world
    

    hello_cargo 프로젝트가 생성된 것을 확인할 수 있습니다. 이제 디렉토리로 이동한 후 어떻게 디렉토리가 구성되었는지 확인해보겠습니다.

    # hello_cargo 프로젝트 이동
    $ cd hello_cargo
    
    # 디렉토리 구성 확인
    $ tree              
    .
    ├── hello_cargo
    │   ├── Cargo.toml
    │   └── src
    │       └── main.rs
    └── hello_world
        └── main.rs
    
    4 directories, 3 files
    

    이제 생성된 src/main.rs 코드를 확인해봅시다.

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

    Hello World! 프로젝트와 거의 동일한 코드가 생성된 것을 확인할 수 있습니다.

    카고로 애플리케이션 실행하기

    이제 애플리케이션을 실행해보도록 하겠습니다. 터미널에 cargo run 이란 명령어를 실행해봅시다.

    # 프로젝트 실행
    $ cargo run     
       Compiling hello_cargo v0.1.0 (/home/gurumee/Workspaces/studies/the-rust-programming-language/hello_cargo)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.42s
         Running `target/debug/hello_cargo`
    Hello, world!
    

    다시 src/main.rs 에서 다음처럼 수정해보겠습니다.

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

    그 후 다시 cargo run 명령어로 애플리케이션을 실행해봅시다.

    # 프로젝트 실행
    $ cargo run
       Compiling hello_cargo v0.1.0 (/home/gurumee/Workspaces/studies/the-rust-programming-language/hello_cargo)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.18s
         Running `target/debug/hello_cargo`
    Hello, Cargo!
    

    카고로 애플리케이션 빌드하기

    이제 마지막으로 애플리케이션을 빌드하고 실행해보겠습니다. 터미널에 cargo build 명령어를 실행해봅시다.

    $ cargo build
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
    

    기본적으로 빌드하면, 개발 환경으로 빌드가 실행됩니다. 빌드 후, target/debug 폴더에 hello_cargo 란 실행 파일이 생성됩니다. 이제 실행 파일을 생성해봅시다.

    $ ./target/debug/hello_cargo
    Hello, Cargo!
    

    결국 cargo run 이란 명령어는 빌드 후 실행 파일을 실행하는 것을 축약한 명령어입니다. 실제 프로덕션 환경에 배포할 애플리케이션을 빌드하려면 터미널에 다음과 같이 명령어를 입력하면 됩니다.

    $ cargo build --release
       Compiling hello_cargo v0.1.0 (/home/gurumee/Workspaces/studies/the-rust-programming-language/hello_cargo)
        Finished `release` profile [optimized] target(s) in 0.15s
    

    그럼 마찬가지로 target/release 폴더에 실행 파일이 생성됩니다.

    728x90
Designed by Tistory.