第一步要做的事情是
安装Rust编译环境(人人都有的windows)
咱工作机器是win7+mingw
所以直接到下面的链接下载Windows ([GNU ABI †]) (.msi)就好
https://www.rust-lang.org/en-US/downloads.html
安装完成后在mingw里输入"rustc --version"检查安装是否成功
如果安装成功会看到以下输出
该来的总会来
Hello World
总之先创建一个放代码的文件夹
$ mkdir hello_world
$ cd hello_world
Rust源文件的后缀名是“.rs”,所以咱们现在要创建一个叫“main.rs”的文件然后把下面的代码放到里面。
fn main()
{
println!("Hello world!");
}
- 第一行代码定义了一个没有参数没有返回值的函数main,因为咱主业是搞c++,无返回值的函数前面没有void还是感觉有点怪。
- 第二行和最后一行是大括号把函数的实现代码包起来,这没啥好说的。
- 第三行,这一行把hello world输出到屏幕,名字很直观print line;说起来官方的文档上特别强调缩进是4个空格,不要用tab,咱还以为用tab会有啥问题,特意试了下并没有啥功能上的区别能编能跑,果然还是强调码规范吧。值得一提的是,println!()这样表示调用的是Rust的宏,是meta编程的实现方式,如果去掉‘!’就是直接调用函数了。关于Rust宏的部分咱还没看到,总之慢慢来_(:з」∠)_。最后用‘;’结尾,因为咱主业是搞c++,咱觉得这很合理。
接下来咱们就要编了
$ rustc main.rs
运行完这个命令后同级目录下会出现一个main.exe,Linux或者mac就直接是main了,运行它!
然后咱们会看到
总要搞个大项目
Cargo 碉堡了!
Cargo是Rust的包管理器和构建系统,能编咱们的工程,还能下载咱们工程依赖的库,还能编咱们下载下来的依赖库!因为咱还搞过iOS,咱觉得cocoapods很方便,看到Cargo有这功能咱很欣慰。
一般来说通过安装包安装Rust编译环境的都自带了Cargo,运行下面的命令来检查Cargo是否正常
$ cargo --version
如果成功咱们会看到
接下来咱们用Cargo重新编译Hello world,但是咱们的工程文件夹目前的结构不是很合适,要稍微挪一挪
$ mkdir src
$ mv ./main.rs src
$ rm ./main.exe
在hello_world目录下创建一个文件,命名为Cargo.toml,注意C务必要大写。
这是一个TOML文件,用起来有点像INI,但是更强大(其实咱也没怎么用过_(:з」∠)_)。
接着把下面的代码写入Cargo.toml
[package]
name = "hello_world"
version = "0.0.1"
authors = [ "Your name " ]
[package]表示接下来的都是用来配置package的部分,接下来的三行配置程序名称、程序版本以及作者。
保存好后咱们开始build
$ cargo build
如果build成功咱们会看到
运行!
$ ./target/debug/hello_world.exe
换着法儿运行!
$ cargo run
要快,要Release
输入以下命令来编Release版本,编译Release版本会让咱们的程序跑的更快,但是编译起来会更慢。
$ cargo build --release
Cargo.lock是神马
在使用Cargo编译完咱们的工程后在咱们工作路径下会多出一个文件“Cargo.lock”
里面的内容看起来应该是这个样子:
[root]
name = "hello_world"
version = "0.0.1"
Cargo用这个文件来跟踪咱们工程中的各种依赖。因为咱们写的hello_world没有任何依赖,所以咱们的Cargo.lock看起来超简单。在实际工作中咱们一般不用碰这个文件,一切交给超厉害的Cargo就好。
论如何轻松痛快的创建新项目
懒是推动科技发展的最强大的力量——孔子
超懒的咱要用Cargo new来轻松创建新项目
$ cargo new hello_worldex --bin
new之后跟的第一个参数是新项目路径,--bin表示这个新建项目是一个可执行程序。
运行完上面那条命令后,就会发现当前目录下多了一个hello_worldex文件夹。
该文件夹中包含一个Cargo.toml 和一个src文件夹
打开Cargo.toml看看,……居然自动添加了咱的名字……
[package]
name = "hello_worldex"
version = "0.1.0"
authors = ["Renzhi"]
[dependencies]
咱们还会在src中找到自动生成的main.rs
内容如下
fn main() {
println!("Hello, world!");
}
居然写好了hello world……咱很欣慰
参考资料
The Rust Programming Language
Cargo Guide