注:rust 目前更新仍旧很频繁,语法变化比较大,学习主要基于 Rust 1.0 Alpha 版本,之后可能会有部分变化。
先来说下 Rust 的优点:
- RAII(Resource Acquisition Is Initialization) :垃圾回收 GC 是解决内存安全的最普通方式,但是 Rust 系统并不依靠 GC,而是在编译时通过 RAII 实现资源自动释放。
- ** 安全便捷的并发开发 ** :这个后面学习里面会讲到,这个和 Golang 应该算竞争了吧。
- ** 高效的执行效率 **:根据测试,rust 的性能应该是超过了 Java 了。(一时半会找不到了,找到补上) 缺点我感觉如下:
- ** 学习复杂度不低 **:相对 go 或者其他语言,还是复杂很多,学习门槛比较高。
- **GC 的问题 **:GC 好处是屏蔽了很多问题,会带来性能问题,比如 Go,Rust 需要了解更多的编译器细节。
Rust 基础
Rust 原文件扩展名是. rs,编译程序名字叫做 rustc。可以使用 rustc xxx.rs
编译成可执行文件。首先还是管用的 hello world:
fn main(){println!("hello world!");}
println 是一个宏定义,后面会再详细写一下。fn 有点类似表示函数的 function 的定义,说起来,rust 是 Javascript 之父搞的,品位嘛,呵呵。
Rust 安装程序带一个叫做 cargo 的工具,这个工具是用于项目编译的,可以按照下面的路径组织文件:
|__Cargo.toml
|__src
|__main.rs
Cargo.toml 文件内容如下:
[package]
name = "hello_world"
version = "0.0.1"
authors = ["Your name <you@example.com>" ]
[[bin]]
name = "main"
使用 cargo build
命令可以在 src 同级目录下生成 target 目录,下面就包含了生成的二进制文件。执行完成之后,在 Cargo.toml 同级目录下会生成一个 Cargo.lock 文件,这个文件是用于跟踪程序版本的。
参数赋值
参数赋值主要是使用下面的方式:
let x = 5;
let (y, z) = (2, 3);
let i:i32 = 4;
println!("The value of x is: {}, y is: {}, z is: {}, i is: {}", x, y, z, i);
Rust 会自动定义类型,你也可以在变量后面加上 : 类型
定义类型,比如:let j:i32
。值得注意的是 Rust 会严格检查一些这样的未初始化变量,如果不赋值的话,一定会编译报错的。