diff --git a/src/chapter_3/chapter_3_17_3.md b/src/chapter_3/chapter_3_17_3.md new file mode 100644 index 0000000..2b90bf9 --- /dev/null +++ b/src/chapter_3/chapter_3_17_3.md @@ -0,0 +1,48 @@ +# 3.17.3 再谈crate +## 1. 创建二进制crate和库crate +可以被编译成可执行文件的crate就是二进制crate,它的代码中必定包含一个main函数。如下方式创建的就是一个二进制crate: +``` +cargo new main +``` + +对于库crate的创建,需要加上--lib方式如下: +``` +cargo new my-lib --lib +``` + +## 2. 使用第三方的crate +在Rust项目中,经常会使用第三方的crate。使用第三方的crate主要分为两步: +- 添加依赖; +- 在代码中使用。 + +下面以使用第三方crate rand为例,来进行演示。 +### (1)首先创建一个工程: +``` +cargo new main +``` + +### (2)添加依赖: +``` +cd main +``` + +打开main目录下的Cargo.toml文件,在[dependencies]下添加对rand库的依赖(即添加语句rand = "0.8.5"),添加后整个文件的内容如下: + +![注释](../../assets/39.png) + +### (3)在代码中使用rand库 +编写src/main.rs如下: + +```Rust +// src/main.rs +use rand::prelude::*; // 引入rand库 + +fn main() { + // 使用rand的函数 + let mut rng = rand::thread_rng(); + let y: f64 = rng.gen(); + println!("y = {:?}", y); +} +``` + +**重点说明**:在第二步中,当在Cargo.toml的[dependencies]添加rand = "0.8.5"后,程序编译时,会自动先去拉取rand库相关的内容,拉取完成后进行编译。