内容简介:许久不写博客了,临近毕业,各种事情都告一段落。无意间看到安利Rust的文章,心里就种草了,闲来无事,从网上找到《Rust programming book》的中文版,陆陆续续看到400页,觉得可以开始写代码了。正好最近又想把Leetcode上的题刷完,而leetcode又已经支持Rust了,就开始决定用Rust刷Leetcode,刷题的同时,顺便就熟悉新语言了。写博客的时候,突然发现Csdn乱七八糟的东西多了好多,于是就是转到掘金来了。
许久不写博客了,临近毕业,各种事情都告一段落。无意间看到安利Rust的文章,心里就种草了,闲来无事,从网上找到《Rust programming book》的中文版,陆陆续续看到400页,觉得可以开始写代码了。
正好最近又想把Leetcode上的题刷完,而leetcode又已经支持Rust了,就开始决定用Rust刷Leetcode,刷题的同时,顺便就熟悉新语言了。
写博客的时候,突然发现Csdn乱七八糟的东西多了好多,于是就是转到掘金来了。
废话不多说,下面开始进入正题
环境配置
Rust安装
个人目前使用的是windows环境,这里主要介绍windows下环境的配置 首先,下一个rustup,运行rustup安装rust和其配套的包管理工具。具体细节不多说,网上有很多教程,其中关键点是,因为rustup默认的下载源在国外,所以下载速度会很慢,所以在下载之前,先加两个系统变量,配置一个中科大的源:
RUSTUP_DIST_SERVER: https://mirrors.ustc.edu.cn/rust-static RUSTUP_UPDATE_ROOT: https://mirrors.ustc.edu.cn/rust-static/rustup 复制代码
IDE配置
安装好之后,我们需要一个IDE,这里我选择 IDEA + Rust插件
装好之后,新建一个Rust bin项目
建好项目之后,接下来就可以开始写程序了
配置单元测试环境
Rust提供了非常方便的单元测试和集成测试功能,我们想要在写完每道题的算法之后,运行一套测试用例,看看程序是否写对了。
首先在src目录下有个 main.rs
,我们在src目录下再新建一个rust文件,作为存放每道题的解法和单测的地方。像这样:
我这里新建了一个 n754_reach_a_number.rs
的文件 (即编号为754,标题名为reach a number的题目) ,因为Leetcode的代码是以函数的方式提交的,里面的代码是这样:
use std::f64; pub struct Solution{} impl Solution{ pub fn reach_number(target:i32)->i32{ let target=target.abs(); let mut n=f64::sqrt(2.0*target as f64) as i32; let mut sum=n*(n+1)/2; while sum<target{ n+=1; sum+=n; } while (sum-target)%2==1{ n+=1; sum+=n; } n } } #[cfg(test)] mod tests { use super::*; #[test] fn test_1() { assert_eq!(Solution::reach_number(1),1); assert_eq!(Solution::reach_number(2),3); assert_eq!(Solution::reach_number(3),2); assert_eq!(Solution::reach_number(7),5); assert_eq!(Solution::reach_number(8),4); assert_eq!(Solution::reach_number(12),7); } #[test] fn test_2(){ assert_eq!(Solution::reach_number(-1),1); assert_eq!(Solution::reach_number(-2),3); assert_eq!(Solution::reach_number(-3),2); assert_eq!(Solution::reach_number(-7),5); assert_eq!(Solution::reach_number(-8),4); assert_eq!(Solution::reach_number(-12),7); } } 复制代码
其中上面是题目的解法,下面是我们的单测
接下来在 main.rs
引入我们的mod(Rust里一个文件即可以看作一个mod):
mod n754_reach_a_number; fn main() { } 复制代码
看上去我们的 main
函数什么也没做,事实上我们也不需要它做什么,我们只是要引入这个mod,然后运行mod里的单测,这可以通过 Edit Configuration
实现:
像上图这样,新建一个test,把 command
改为 test
,这样在我们运行它的时候就会自动运行mod的单测了(因为 #[cfg(test)]
只允许在test的时候运行,所以需要把命令改为test)
通过上述操作,接下来再写其他题的时候,我们只需要把根据对应的题目建一个对应的 rs 文件,再在 main.rs
把不相关的mod删掉,只引入想要运行的题目的单测就好了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 分离Webpack开发环境与生产环境的配置
- Xcode配置测试环境和线上环境
- Linux环境centos7 配置java环境
- hadoop地址配置、内存配置、守护进程设置、环境设置
- 配置lisp开发环境
- 配置lisp开发环境
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。