入门
装置 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;// errorprintln!("{}, 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