Crates - general explanation
- A complete, cohesive unit that consists of Rust programs
- the smallest amount of code that the Rust compiler considers at a time.
- All the source code for a single library or executable (+ tests, examples, tools, configuration, and other junks)
- Crates can contain modules, and the modules may be defined in other files that get compiled with the crate.
- Two types of Crates:
- Binary crate: programs you can compile to an executable that you can run, such as a command-line program or a server. It requires
main()
function.
- Library crate: they define functionality intended to be shared with multiple projects. no main() functions and don't compile to an executable.
- 보통 Crate는 라이브러리 크레이트를 말하며, 일반적인 프로그래밍 개념에서의 라이브러리로도 말할 수 있다.
- The easiest and simple way to check Crates:
cargo build --verbose
(verbose: using or expressed in more words than are needed.)
cargo build --verbose
를 통해서 크레이트를 체크하고 로컬에 존재하지 않는 크레이트를 자동으로 다운로드 한다. (Library crate)
// cargo.toml
[package]
name = "mandelbrot"
version = "0.2.0"
authors = ["Jim Blandy <[email protected]>"]
edition = "2018"
[dependencies]
num = "0.4"
image = "0.13.0"
rayon = "1"
- cargo.toml 파일에 원하는 버전의 크레이트를 명시함으로써 종속성을 관리한다.
use num::Complex;
use rayon::prelude::*;
- 러스트 파일에서 사용할 때는 예약어 use를 사용한다.
Dependencies
- other crates the project uses: code we're depending on.
- where to find: crates.io -> 다트의 pub.dev처럼 러스트의 크레이트를 모아둔 러스트 커뮤니티 사이트다.
how Cargo recognize crates on cargo.toml
- Developer write crate info on the file
- Run
cargo build
- Cargo downloads source code for the specified versions of these crates form crates.io
- Based on Cargo.toml files, download their dependencies