Skip to content

yi-ge/rust-practice

Repository files navigation

Rust练习

license GitHub Actions Test Results Coveralls github GitHub last commit Gitpod Ready-to-Code

Rust 基础算法、数据结构练习,包含 LeetCode 或其它算法练习记录。

此为个人练习仓库,代码中对重要思想进行了注释,会尽量补充解题思路。

每一道题都对应写有测试用例,但可能不够完整。如果您发现错误,欢迎给我留言,谢谢!

安装以下测试环境后,运行yarn start可以自动从LeetCode获取代码函数和用例说明。保存文件后将自动同步到浏览器。

特别说明:题目截图仅为了方便在代码编辑器中直接预览从而优化编码体验,题目以LeetCode官方页面为准,题目著作权及其他权利以LeetCode官方说明为准或属于LeetCode。请大家尊重版权,共同维护良好网络环境。

测试环境

安装最新版RustNode.jsPython3。安装完成后执行yarn安装依赖。

非CI环境的Linux x86平台下

单元覆盖率测试依赖:cargo install cargo-watch cargo-tarpaulin以及VSCode插件Coverage Gutters

执行命令cargo watch -x 'tarpaulin --ignore-tests --out Lcov' -i lcov.info,可以在VSCode中查看覆盖情况。

参考进行覆盖率测试。

非CI环境的MacOS x86/ARM平台下

需要安装nightly版本的构建工具用于单元覆盖率测试(仅用于单元覆盖率测试,否则可以使用stable版本)。

如果已经通过brew安装了rust,可以先brew uninstall rust再执行brew install rustup-init安装rustup-init。执行rustup-init就有了rustup。后续通过rustup管理rust版本(如非覆盖率测试必要,仍然建议使用brew install rust安装稳定的rust版本)。

设置为nightly版本:

rustup default nightly

安装覆盖率测试相关依赖:

rustup component add llvm-tools-preview
cargo install grcov

执行本地覆盖率测试(在HTML中查看):

cargo xtask coverage --dev

安装VSCode插件Coverage Gutters。执行本地覆盖率测试(VSCode中查看):

cargo xtask coverage

右键:Coverage Gutters: Display Coverage

基础排序算法

基础数据结构

Rust标准库中的数据结构

Rust标准库std::collections提供了4种通用容器类型,包含一下8种数据结构。

类型 容器 描述
线性序列 Vec<T> 连续存储的可变长数组
线性序列 VecDeque<T> 连续存储的可变长双端队列
线性序列 LinkedList<T> 非连续存储的双向链表
键 - 值对 HashMap<K, V> 基于哈希表的无序键 - 值对
键 - 值对 BTreeMap<K, V> 基于B树的有序键 - 值对,按 Key 排序
集合 HashSet<T> 基于哈希表的无序集合
集合 BTreeSet<T> 基于B树的有序集合
优先队列 BinaryHeap<T> 基于二叉堆的优先队列

通过Rust实现的数据结构及其常见操作

算法题

字符串

数组/队列/集合/映射

链表

排序

其它