hello rustdocker
fn main() { println!("Hello, world!"); }
從hello world入手,rust的語法是比較簡潔。 在mac os中,咱們習慣使用docker來快速部署環境。到https://hub.docker.com/查找rust,咱們選擇第一個,而後安裝它:express
docker pull scorpil/rust
而後在本地映射一個目錄:函數
docker run -it --rm -v /Users/YOURHOMEDIR/Learn/rust:/someName scorpil/rust
進入docker, cd /srv就能夠到你的本地對應的目錄。rust 也許是近代設計的新語言,包設計,目錄結構都比較科學。若是咱們學習的時候,也能像開發同樣,是挺好的,rust也以爲這樣不錯,新建一個項目只要一個命令,cargo new NAME。若是你沒有指定後面的參數--bin,這是生成一個Lib庫。--bin表明是一個二進制的包。oop
只要記得兩三個命令就能夠了,學習
cargo new PROJECT --bin cargo run cargo build
下面開始簡介:劃重點ui
忽然發現沒什麼好記的:spa
第1、設計
1. rust全部變量都是默認不可變。要改變要加mut關鍵字。rest
2. 變量是能夠覆蓋的code
let a = 1;
let a = 2;
可是let不能丟
第2、格式化有點簡潔,只要挖個坑{}就行。
println!("{}, {}!", "Hello", "world"); // Hello, world! println!("{0}, {1}!", "Hello", "world"); // Hello, world! println!("{greeting}, {name}!", greeting="Hello", name="world"); // Hello, world!
第3、函數返回有點省,函數默認返回一個空的tuple。
//Returning fn plus_one(a: i32) -> i32 { a + 1 //no ; means an expression, return a+1 }
若是加了return反而是不建議的 :(
第4、arrays和tuples都是固定長度。
arrays
let a = [1, 2, 3]; // a[0] = 1, a[1] = 2, a[2] = 3 let mut b = [1, 2, 3]; let c: [int; 3] = [1, 2, 3]; //[Type; NO of elements] let d: ["my value"; 3]; //["my value", "my value", "my value"]; let e: [i32; 0] = []; //empty array
tuples
let a = (1, 1.5, true, 'a', "Hello, world!"); // a.0 = 1, a.1 = 1.5, a.2 = true, a.3 = 'a', a.4 = "Hello, world!" let b: (i32, f64) = (1, 1.5); let (c, d) = b; // c = 1, d = 1.5 let (e, _, _, _, f) = a; //e = 1, f = "Hello, world!", _ indicates not interested of that item let g = (0,); //single-element tuple
第5、流程控制好簡潔。
let team_size = 7; let team_size_in_text = if team_size < 5 { "Small" //⭐️no ; } else if team_size < 10 { "Medium" } else { "Large" };
第6、match是個好東西
let tshirt_width = 20; let tshirt_size = match tshirt_width { 16 => "S", // check 16 17 | 18 => "M", // check 17 and 18 19 ... 21 => "L", // check from 19 to 21 (19,20,21) 22 => "XL", _ => "Not Available", }; println!("{}", tshirt_size); // L
第7、循環
let mut a = 1; while a <= 10 { println!("Current value : {}", a); a += 1; //no ++ or -- in Rust }
while, for, loop 循環幾乎都長得差很少,多一個label能夠標記中斷
let mut c1 = 1; 'outer_while: while c1 < 6 { //set label outer_while let mut c2 = 1; 'inner_while: while c2 < 6 { println!("Current Value : [{}][{}]", c1, c2); if c1 == 2 && c2 == 2 { break 'outer_while; } //kill outer_while c2 += 1; } c1 += 1; }
來自: https://medium.com/learning-rust/rust-basics-e73304ab35c7