1、變量的定義和使用web
其它常見的編程語言對變量的定義一般是經過聲明類型和使用關鍵new來建立一個變量,但Rust不是,Rust使用關鍵字let。express
1. 變量綁定經過let實現編程
fn main() {編程語言
let x = 5;函數
}oop
2. 變量能夠是一種模式,自動匹配。spa
let (x, y) = (1, 2);code
3. 支持聲明類型orm
let x: i32 = 5;it
4. 變量綁定要求在能夠使用它以前必須初始 化。
let x: i32; //錯誤,若是沒有使用到這個變量,編譯的時候是個警告,若是在某個地方使用到就是錯誤了。
let x: i32 = 10; //正確,初始化是一個好的習慣
5. 默認變量的值不可改變,若是要改變則使用關鍵字mut
let mut x = 5; // mut x: i32
x = 10;
6. let開始的是一個語句,而不是表達式
let mut y = 5;
let x = (y = 6); // x has the value `()`, not `6`
2、函數
1.函數即方法,使用關鍵字fn聲明
fn main() {
}
2. 你必須爲函數參數聲明類型
fn print_number(x: i32) {
println!("x is: {}", x);
}
fn format(name: &str){
println!("match? {}", name);
}
3. 函數返回值及其類型
fn add_one(x: i32) -> i32 {
x + 1
}
注意裏面行尾沒有分號;若是加上反而報錯
4. 使用關鍵字return的函數
fn foo(x: i32) -> i32 {
return x + 1;
}
這個最多見的返回值方式竟然在Rust裏不被鼓勵,怎麼回事
5. 發散函數
fn diverges() -> ! {
panic!("This function never returns!");
}
以它擁有一個類型 ! ,它表明「發散」。一個發散函數能夠是任 何類型:
let x: i32 = diverges();
let x: String = diverges();
3、條件語句
條件控制語句中的條件是不須要用小括號()包裹起來
例如 :
if universe::recalibrate() {
return;
}
let x = 5;
if x == 5 {
println!("x is five!");
} else if x == 6 {
println!("x is six!");
} else {
println!("x is not five or six :(");
}
while count < 10 {
println!("count is {}", count);
count += 1;
}
4、循環與迭代
1. loop
let mut x = 10;
loop {
x += 1;
println!("{}", x);
}
2. while
let mut x = 5; // mut x: u32
let mut done = false; // mut done: bool
while !done {
x += x - 3;
println!("{}", x);
if x % 5 == 0 {
done = true;
}
}
4. for
C系的for循環:
for (x = 0; x < 10; x++) {
printf( "%d\n", x );
}
Rust的for循環:
使用下面這樣的迭表明達式
for var in expression {
code
}
for x in 0..10 {
println!("{}", x); // x: i32
}
記錄循環次數
for (i,j) in (5..10).enumerate() {
println!("i = {} and j = {}", i, j);
}
結果:
i = 0 and j = 5
i = 1 and j = 6
i = 2 and j = 7
i = 3 and j = 8
i = 4 and j = 9
即符合以下表達式:
for (linenumber, line) in lines.enumerate() {
println!("{}: {}", linenumber, line);
}
5. 改變循環狀態的關鍵字
即break 和 continue
例如:
let mut x = 5;
loop {
x += x - 3;
println!("{}", x);
if x % 5 == 0 { break; }
}
其實就基礎語法方面的認識,大多數語言都是通用的,可能會稍微增長一下各自語言的特性。