这是一个快速查阅的页面,用来查那些你不想为此重读整节课的内容。每一部分都附有链接,指向详细讲解它的那一页。
| 方法 |
作用 |
.len() |
以字节为单位的长度 |
.trim() |
去掉开头和结尾的空白字符 |
.to_uppercase() / .to_lowercase() |
大小写转换 |
.contains(pat) |
是否包含某个子串或模式 |
.replace(from, to) |
替换所有匹配项 |
.push_str(s) |
在末尾追加一个 &str |
.push(c) |
在末尾追加一个 char |
.chars() |
逐个字符遍历 |
.split(pat) |
拆分成一个子串迭代器 |
.parse::<T>() |
把文本转换成另一种类型(返回 Result) |
详细说明和示例请看字符串一页。
| 方法 |
作用 |
.push(x) |
添加到末尾 |
.pop() |
移除并返回最后一个元素(Option) |
.remove(i) |
移除索引 i 处的元素 |
.len() |
元素个数 |
.is_empty() |
vector 是否为空 |
.get(i) |
安全的按索引访问(返回 Option,不会 panic) |
.iter() |
按引用遍历 |
.contains(&x) |
是否包含某个值 |
.sort() |
原地排序 |
.sort_by_key(|x| ...) |
按某个字段或计算出的键排序 |
.dedup() |
去掉相邻的重复元素(先排序) |
详细说明和示例请看 vector、排序与查找和迭代器这几页。
| 类型 |
适合在你需要…… |
Vec<T> |
一个有序、可增长的列表 |
HashMap<K, V> |
按键快速查找值 |
HashSet<T> |
不重复的元素,以及快速判断“它在不在里面” |
BTreeMap<K, V> |
按键排好序的键值对 |
VecDeque<T> |
一个队列:两端都能放入和取出 |
详细说明和示例请看哈希 map 和 HashSet 与 BTreeMap 这两页。
| 方法 |
适用于 |
作用 |
.unwrap() |
两者 |
取出值,遇到 None/Err 时 panic |
.expect("msg") |
两者 |
和 .unwrap() 一样,但可以自定义 panic 信息 |
.unwrap_or(default) |
两者 |
取出值,或者使用一个备用值 |
.is_some() / .is_none() |
Option |
检查是哪个变体 |
.is_ok() / .is_err() |
Result |
检查是哪个变体 |
? |
两者 |
遇到 None/Err 时提前返回 |
详细说明和示例请看 Option 和 Result 这两页。
| 占位符 |
打印出什么 |
{} |
普通显示(需要实现 Display trait) |
{:?} |
Debug 格式 |
{:#?} |
美化排版的 Debug 格式 |
{:.2} |
保留 2 位小数 |
{:5} |
填充到宽度 5 |
{name} |
直接嵌入名为 name 的变量 |
详细说明和示例请看输出一页。
| 命令 |
作用 |
cargo new name |
创建新项目 |
cargo run |
构建并运行 |
cargo check |
快速检查错误,不生成可执行文件 |
cargo test |
运行测试 |
cargo add crate |
添加依赖 |
cargo fmt |
格式化代码 |
cargo clippy |
检查代码中的常见错误(lint) |
cargo build --release |
构建经过优化的可执行文件 |
详细说明和示例请看 Cargo 与 crate 一页。
| 语法 |
含义 |
1..5 |
从 1 到 5,不包括 5 |
1..=5 |
从 1 到 5,包括 5 |
..3 |
从开头到 3,不包括 3 |
2.. |
从 2 到结尾 |
.. |
全部 |
详细说明和示例请看 for 和 slice 这两页。
这些 crate 都可以用 cargo add <crate> 添加。怎样挑选一个好的 crate,请看 Cargo 与 crate。