入门
装置 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}
工程化
cargo
Read me