新建 haha 项目

新建 haha 项目,在CMD 或者 powershell 中运行指令。

  1. cargo new haha # cargo + new + 项目名
  2. # 首先建立了一个haha文件夹
  3. cd haha # 进入到haha文件夹
  4. dir # 查询haha文件夹下文件,自动输出目录
  5. # 最简单直接手动打开haha文件夹,看到两个文件和两个文件夹
  6. # 俩文件:.gitignore 和 Cargo.toml
  7. # 俩文件夹:src 和一个隐藏文件夹 .git
  8. # .gitignore文件与.git文件夹与git版本控制系统相关,目前还不会。
  9. # Cargo.toml用记事本打开,可以看到:
  10. [package] # 一个片段(section),表明下面的语句用来配置一个包,随着在这个文件增加更多的信息,还将增加其他片段
  11. name = "haha" # 项目名称
  12. version = "0.1.0" # 显示Cargo版本
  13. authors = ["**"] # 显示电脑用户名/作者
  14. edition = "2018" # Rust版本
  15. # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
  16. [dependencies] # 依赖:代码所需要的库。这里开始罗列项目依赖的片段。
  17. # src文件夹内只有一个main.rs文件,用记事本软件打开,可以看到内容如下:
  1. fn main() {
  2. println!("Hello, world!");
  3. }

cargo 将源文件都放在 src 文件夹内。 根目录(与src 同级)只存放 README、license 信息、配置文件和其他跟代码无关的文件。
println! 是输出命令,类似与python中的 print( ) 函数,但是println! 的感叹号代表一个宏,宏 ≠ 函数。
开头必须以main()函数开头,和C语言一样,如果将main() 函数换成别的函数名,就无法进行编译。

Cargo

Cargo 用来创建工程 cargo new projece_name ,Cargo 也用来 build 项目 cargo build 及用来 run 项目 cargo run 等。

build

刚才的CMD还没有关闭的话,输入命令: cargo build ;(如果关闭重新打开 CMD ,cd到haha目录)。
输出如下:

  1. Compiling haha v0.1.0 (C:\Users\***\haha) # 编译 haha 项目
  2. Finished dev [unoptimized + debuginfo] target(s) in 1.16s # 1.16s完成
  3. # 我用C语言编译hello world,看出编译时间 1s。确实差不多。不过目前的水平比较这个好像没什么意义。
  4. # 目的是做出的软件,运行时不会崩溃。无关内容暂时少分心,先不与关注。

刚才的haha文件夹内,多了一个 Cargo.lock 文件【无需管,Cargo 处理用,文件记录项目依赖的实际版本】及一个 target 文件夹。cargo.lock用文本编辑器打开,就显示了作者和版本信息。target文件夹内有一个 CACHEDIR.TAG 文件和 .rustc_info.json 文件,还有一个debug(调试)文件夹。debug文件夹内有编译完成的haha.exe文件。——build构建项目就包含了一整套编译工作,的确很棒!比起C++调试工作环境就尝试了半个多月,简直不要太方便了。

run

刚才输入 cargo build 进行了编译,再输入 cargo run 运行编译好的exe文件。还是刚才的cmd窗口:

  1. C:\Users\***\haha>cargo run
  2. Finished dev [unoptimized + debuginfo] target(s) in 0.02s
  3. Running `target\debug\haha.exe`
  4. Hello, world!

其实 cargo run 相当于 cd 到debug文件夹,然后输入 haha.exe ,cmd会直接输出 Hello, world!
只是相比较而言,不用切换文件夹,而且在不同的系统下,命令都是相同的。这简直不要太方便。
别人写的程序源代码,我只需要cargo build 再加 cargo run,完美!
如果快一点,不要build,直接 cargo run ,既编译又运行。上一步为什么没编译这一步呢?因为build之后,发现文件没有改变,就直接运行了。

check

cargo check 命令:快速检查代码确保其可以编译,但并不产生可执行文件,可以加速开发,非常好。

test

cargo test 测试代码问题?还不确定和check的区别。

doc

cargo doc 构建文档,所有代码前端的文档注释。
cargo doc --open 构建文档并打开。

release

当项目最终准备好发布时,可以使用 cargo build --release 来优化编译项目。这会在 target/release 下生成可执行文件。【build是在 target/debug 文件夹下】这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。这也就是为什么会有两种不同的配置:一种是为了开发,你需要经常快速重新构建;另一种是为用户构建最终程序,它们不会经常重新构建,并且希望程序运行得越快越好。如果你在测试代码的运行时间,请确保运行 cargo build --release 并使用 target/release 下的可执行文件进行测试。

一套指令

新建,编译,运行,发布。
cargo new ——>cargo build ——> cargo run ——> cargo build --release
首先是 cargo new + snake_case_project_name ;
其次是最常用的 cargo run ——既编译又运行,直接查看结果;
编写程序过程中,时刻记得测试 cargo test 和 快速检查代码确保其可编译的cargo check
最后没问题了就可以发布了, cargo build -release

输出

Rust中,输出有两个命令,一个是 println!( ) ,另一个是 print!( )println!() 是打印本行,也就是自带换行符,相当于 print!() 后面加了个换行符。