声明

笔记均为个人撰写,只用于记录自己学习时遇到的问题等,不定期更新

推荐的 Rust 教程:

Rust 语言圣经(Rust Course)

通过例子学 Rust

Rust 程序设计语言

看新不看旧,Rust 2024 Edition 将在 2025 年 2 月发布,建议在配置环境及后续学习时选用 1.84 及以上的版本

修改 Rust 下载镜像源

Rust 默认镜像源为crates.io,有时下载速度过慢,可换用国内镜像源

$HOME/.cargo/config.toml添加 ustc 镜像源

1
2
[registries]
ustc = { index = "https://mirrors.ustc.edu.cn/crates.io-index/" }

使用稀疏索引

1
2
[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

引入依赖时(例如time),在Cargo.toml中添加

1
2
[dependencies]
time = { registry = "ustc" }

操作 UTF-8 字符串

使用 Rust 字符串切片语法时,需要注意若字符串为 UTF-8 字符串,切片索引必须在字符间的边界位置

中文在 UTF-8 中占用三个字节,若只切片了其中两个字节会导致运行报错(panic)

此外,在进行删除操作时,pop()方法是按字符进行的,而remove()truncate()方法是按字节进行的

遍历字符串中的 Unicode 字符可使用chars()方法

1
2
3
for c in "这是UTF-8字符串".chars() {
println!("{}", c);
}

获取UTF-8字符串中的字串:utf8_slice

转义字符

若字符串中包含",可以在开头和结尾加#

若字符串中包含#,可以在开头和结尾加多个#,最多 255 个,只需保证比字符串中连续#的个数多即可

1
2
3
4
5
6
7
fn main() {
let quotes = r#"I said: "Hello world!""#;
println!("{}", quotes);

let longer_delimiter = r###""A string with # in it. And even ##!""###;
println!("{}", longer_delimiter);
}