diff --git a/README.md b/README.md index a61ea92b..3f9a8470 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ ## 教程简介 - 在线阅读: https://course.rs +- 离线阅读: course.pdf **`Rust语言圣经`**涵盖从**入门到精通**所需的 Rust 知识,目录及内容都经过深思熟虑的设计,同时语言生动幽默,行文流畅自如,摆脱技术书籍常有的机器味和晦涩感。 diff --git a/genpdf.sh b/genpdf.sh new file mode 100755 index 00000000..ebf82862 --- /dev/null +++ b/genpdf.sh @@ -0,0 +1,34 @@ +#! /bin/sh + +########################################################### +# Description: +# This script write for mdbook project to generate pdf +########################################################### + +cargo install mdbook mdbook-pdf +hasPdfSec=$(grep "output.pdf" ./book.toml) + +if [ "$hasPdfSec" = "" ]; then + echo "===>>> Backup book.toml file..." + cp book.toml book.toml.bak + cat >> book.toml << EOF + +[output.pdf] +scale = 1 +paper-width = 10 +paper-height = 12 +margin-top = 1 +margin-bottom = 1 +margin-left = 1 +EOF +fi +echo "===>>> Start build pdf..." +mdbook build +today=$(date +%Y%m%d) +echo "===>>> PDF rename to rust-curse-$today.pdf" +mv book/pdf/output.pdf rust-curse-"$today".pdf +if [ -f book.toml.bak ]; then + echo "===>>> Reverse book.toml file..." + mv book.toml.bak book.toml +fi +exit 0 \ No newline at end of file diff --git a/src/basic/base-type/numbers.md b/src/basic/base-type/numbers.md index 420938ef..99d7d661 100644 --- a/src/basic/base-type/numbers.md +++ b/src/basic/base-type/numbers.md @@ -22,7 +22,7 @@ Rust 使用一个相对传统的语法来创建整数(`1`,`2`,...)和浮 | 128 位 | `i128` | `u128` | | 视架构而定 | `isize` | `usize` | -类型定义的形式统一为:`有无符号 + 类型大小(位数)`。**无符号数**表示数字只能取正数,而**有符号**则表示数字既可以取正数又可以取负数。就像在纸上写数字一样:当要强调符号时,数字前面可以带上正号或负号;然而,当很明显确定数字为正数时,就不需要加上正号了。有符号数字以[补码](https://en.wikipedia.org/wiki/Two%27s_complement)形式存储。 +类型定义的形式统一为:`有无符号 + 类型大小(位数)`。**无符号数**表示数字只能取正数和0,而**有符号**则表示数字可以取正数、负数还有0。就像在纸上写数字一样:当要强调符号时,数字前面可以带上正号或负号;然而,当很明显确定数字为正数时,就不需要加上正号了。有符号数字以[补码](https://en.wikipedia.org/wiki/Two%27s_complement)形式存储。 每个有符号类型规定的数字范围是 -(2n - 1) ~ 2n - 1 - 1,其中 `n` 是该定义形式的位长度。因此 `i8` 可存储数字范围是 -(27) ~ 27 - 1,即 -128 ~ 127。无符号类型可以存储的数字范围是 0 ~ 2n - 1,所以 `u8` 能够存储的数字为 0 ~ 28 - 1,即 0 ~ 255。 diff --git a/src/first-try/slowly-downloading.md b/src/first-try/slowly-downloading.md index 3b23be3a..9b408e1f 100644 --- a/src/first-try/slowly-downloading.md +++ b/src/first-try/slowly-downloading.md @@ -44,7 +44,18 @@ ustc = { index = "https://mirrors.ustc.edu.cn/crates.io-index/" } time = { registry = "ustc" } ``` -**在重新配置后,初次构建可能要较久的时间**,因为要下载更新 `ustc` 注册服务的索引文件,还挺大的... +**在重新配置后,初次构建可能要较久的时间**,因为要下载更新 `ustc` 注册服务的索引文件,由于文件比较大,需要等待较长的时间。 + +此处有两点需要注意: + +1. cargo 1.68 版本开始支持稀疏索引,不再需要完整克隆 crates.io-index 仓库,可以加快获取包的速度,如: + +```toml +[source.ustc] +registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/" +``` + +2. cargo search 无法使用镜像 #### 科大镜像 上面使用的是科大提供的注册服务,也是 Rust 最早期的注册服务,感谢大大们的贡献。除此之外,大家还可以选择下面的镜像服务: @@ -60,6 +71,10 @@ replace-with = 'rsproxy' [source.rsproxy] registry = "https://rsproxy.cn/crates.io-index" +# 稀疏索引,要求 cargo >= 1.68 +[source.rsproxy-sparse] +registry = "sparse+https://rsproxy.cn/index/" + [registries.rsproxy] index = "https://rsproxy.cn/crates.io-index"