这是本文档旧的修订版!
RUST
tools
Manual
- 编译型语言,
rustc
类似gcc/clang, 具体man rustc
或rustc -h
- Cargo: 官方自带类似 nodejs 的 npm 这样的项目管理工具.
学新语言步骤笔记
- 了解该语言的出生背景与适用环境:
- Rust是一个由Mozilla主导开发的实验性跨平台编译型编程语言。它的设计准则为“安全,并发,实用”,支持函数式,并发式,过程式以及面向对象的编程风格。适用于系统编程.
- 了解输入输入出流,文件流操作:
- 标准输出: 使用宏
println!(“世界,你好”);
, 或std::io
- 标准输入:
io::stdin().read_line()
等 - 文件
- 了解程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制:
- 可使用官方提供的 Cargo 工具来方便工程依赖
- 代码包含
- 标准库依赖: rust 默认只加载少量库, 要用到的标准库如果没有默认加载, 需要使用 use, 比如:
use std::io;
- 外部库依赖: “extern crate” 之后, 再
use
.
- 了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和输入输出函数的使用
- 变量绑定(variable bindings):
let a = b; let mut somevalue = String::new();
默认为常量(they’re immutable by default), 变量需标明mut
- 变量绑定支持模板(patten)匹配, 类似erlang;
- 基本数据类型: primitive-types
- 条件:
match statement
if a==b { } else { }
.if
也是表达式, 可被变量绑定let a= if b==c {b} else {c};
- 循环:
loop{}
,for x in y{}
,for( ; ;){}
,while
,continue
,break
. - 函数作为一种类型, 仍需指定参数与返回值, 类似C++函数指针:
let mut myfun:fn(i32,i32)→i32
;
- 了解数组和其他集合类的使用:
- Array
- Slice
- Tuple
- 了解字符串的处理
- String(默认utf8编码);
- 了解该语言在面向对象,函数式编程,泛型,元编程等编程范式的特性
- 并发:concurrency
- 了解特有的语法糖
- 了解该语言错误处理,调试方式以及对测试的支持
- 方法调用可返回 Result, 如果未对 Result 进行处理, 编译器会警告;
- Result 可有
ok()
等方法来方便进行错误处理.
- 了解该语言的内存分配机制或GC,线程,进程等运行时效率相关
不需要手动释放内存, 没有运行时GC,但可在编译期来保证内存安全!
- Ownership: 所有权唯一;
- 引用(reference, borrow),可多个引用借用所有权,但同一时间只能有一个可变的引用;引用生存期必须比所有者短;
- 生存期(lifetimes), 可显式声明
'a
,'static
;
- 了解该语言的编译/解释机制
Others
- 注释:
// 两斜线为普通注释; /// 三斜线支持markdown格式, /// 三个斜线的注释可被 cargo doc 生成文档