Rust - 개발 셋팅
포스트
취소

Rust - 개발 셋팅

관련 레포: https://github.com/in63119/Core-practice

오늘부터 코어 개발을 위한(ㅎㅎ) 공부를 시작해볼 것이다. 먼저, 계획하고 있는 코어 공부 플랜을 적어보기로 한다.

  • Rust 환경 셋팅
  • Rust 문법 공부
  • Rust code example 읽기
  • Rust 코드 짜보고 테스트 실행
    • Ex. 블록 넘버 올라가는 것 확인
  • Substrate 셋팅
  • Substrate 테스트
  • 도커 공부
  • 리눅스 친숙해지기
  • C언어 포인터, 메모리 공부(개념 인지)
  • 영어 공부



자, 그럼 오늘부터 Rust를 공부해보자!

1. Rust 개발 셋팅

1-1. 설치

Rust 사이트(https://www.rust-lang.org/tools/install)에서 CLI로 설치가 가능하다.(MacOS)

  • 명령어 : curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

1-2. Rust의 텍스트 편집기?

Rust를 사용할 때 특정한 텍스트 편집기를 필수적으로 사용해야 하는 것은 아니다. 다만 Rust 개발자들은 VS CodeIntelliJ IDEA를 사용한다고 한다. 그 외로는 Sublime Text, Vim/Neovim(이건 터미널에서 급하기 사용할 때 쓰지 않을까??..), Emacs를 사용한다고 한다.

  • 나의 선택?? 당연히 VS Code.
  • (Optional) Rust를 설치 후 VS Code에 rust Extension을 설치 해주었다.

1-3. 프로젝트 셋팅(a.k.a 패키지 매니저)

Node 환경에서는 프로젝트 첫 셋팅을 할 때, npm(or yarn) init -y를 이용한다. 그러면 package.json(or yarn.json)이 생기면서 이곳에 사용하고 싶은 모듈을 설치하여 의존성, 메타데이터, 기타 설정을 정의할 수 있다.
Rust 역시 Cargo(이름 멋있다..)라는 공식 패키지 매니저와 빌드 시스템이 있다. 검색 해본 결과 npm과 비슷한 역할을 하는 것 같다.

  • Cargo.toml과 Cargo.lock: Cargo.toml 파일은 Node.js의 package.json과 유사하며, 프로젝트의 의존성, 메타데이터, 기타 설정을 정의한다. Cargo.lock 파일은 프로젝트의 의존성 트리와 각 의존성의 정확한 버전을 기록하여 일관된 빌드를 보장한다.

  • 의존성 관리: Cargo는 crates.io라는 중앙 집중식 패키지 레지스트리에서 패키지(크레이트라고 함)를 가져온다. Cargo.toml 파일에 정의된 의존성에 따라 필요한 크레이트를 자동으로 다운로드하고, 빌드한다.

  • 프로젝트 빌드: Cargo는 Rust 프로젝트를 쉽게 빌드할 수 있는 명령어를 제공한다. cargo build 명령을 사용하여 프로젝트를 컴파일할 수 있다.

  • 테스트 및 문서: cargo test 명령으로 프로젝트의 테스트를 실행할 수 있고, cargo doc 명령으로 코드 문서를 생성할 수 있다.

  • 패키지 배포: 개발한 크레이트를 crates.io에 배포할 수 있어, 다른 사람들이 사용할 수 있게 된다.



rust 프로젝트를 생성을 하려면, cargo new my_project.

현재 내가 있는 디렉토리에 프로젝트를 초기화 하려면 cargo init. (나는 그냥 초기화만 했다.)


cargo init 후에 생기는 것들

  • src 폴더: 여타 프레임워크의 src 폴더와 다른 것이 없다.(여기서 작업)
  • target 폴더: Node의 경우. 내가 사용하고 싶은 모듈을 설치하면 package.json에 의존성이 저장되면서, node_modules에 설치된다. 일반적으로 node_modules는 깃 레포에 굳이 올리지 않는다. rust도 같은 것이 있을까 검색해보니 역시나 이 target 폴더가 그 역할을 한다고 한다. .gitignore로 커밋 제외 시켜주었다.
  • Cargo.toml & Cargo.lock : package.json(or yarn.json) & package.lock(or yarn.lock)이라고 보면 된다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.