Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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实现的数据结构及其常见操作

算法题

字符串

数组/队列/集合/映射

链表

排序

其它

About

Rust 算法练习。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /