Rust 学习笔记一

注: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。可以使用

xxx.rs``` 编译成可执行文件。首先还是管用的 hello world:
1
2


fn main(){println!(“hello world!”);}

1
2
3
4

println 是一个宏定义,后面会再详细写一下。fn 有点类似表示函数的 function 的定义,说起来,rust 是 Javascript 之父搞的,品位嘛,呵呵。

Rust 安装程序带一个叫做 cargo 的工具,这个工具是用于项目编译的,可以按照下面的路径组织文件:

|Cargo.toml
|
src
|__main.rs

1
2

Cargo.toml 文件内容如下:

[package]

name = “hello_world”
version = “0.0.1”
authors = [“Your name you@example.com“ ]

[[bin]]

name = “main”

1
2
3
4
5
6

使用 ```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 会严格检查一些这样的未初始化变量,如果不赋值的话,一定会编译报错的。