入门
安装 Rust
在 linux 和 mac 上安装 rustup
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
安装成功会显示
Rust is installed now. Great!
在 Windows 上安装 rustup
数据类型
字符
Javascript
const str = "hello";
const string = String("hello");
// 字符合并
const longString = "a" + "b";
Rust
/// 字符串
let str = "hello";
let string = String::from("hello");
/// 字符
let ch = 'h';
// 字符转换成字符串
let str1 = ch.to_string().as_str();
// 字符合并
let long_string = String::from("a").push('b');
数字
javascript 只有 number 类型,number 类型不区分浮点数和整型。
typeof NaN === 'number'
Rust 区分了有符号数,浮点数和整数。
数组
Javascript
const array = [];
array.push(1);
const len_array = [1, 2, 3];
const a = len_array[0];
Rust
let array = vec![];
// 此处的数组长度已经确定
let len_array: [i32, 3] = [1, 2, 3]
let a = len_array[0];
对象
Rust 利用 struct 来实现类,用
赋值
Javascript
let word = 'a';
word = 'b';
Rust
let mut word = 'a';
word = 'b';
所有权
在 String
中的使用中
let s1 = String::from("hello");
let s2 = s1;
// error
println!("{}, world!", s1);
可以通过 clone
和引用指针来解决。
所有权的概念是为了解决 二次释放(double free)的错误
流程控制
循环和条件判断
Javascript
while(let ch = next()) {
if (ch === '\n' || ch === '\r' || (true && true)) {
break;
} else if (ch === '\t') {
// do something
} else {
// do something
}
}
Rust
loop {
let ch = next()
if ch == '\n' || ch == '\r' || (true && true) {
break;
} else if ch === '\t' {
// do something
} else {
// do something
}
}
三目运算
Javascript
const a = true ? 1 : 2;
Rust
let a = if true { 1 } else { 2 }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。