基礎概念

變量

rust 中變量默認是不可變的

fn main() {
    let mut x = 5;
    println!("The value of x is: {x}");
    x = 6;
    println!("The value of x is: {x}");
}
$ cargo run
   Compiling variables v0.1.0 (file:///projects/variables)
error[E0384]: cannot assign twice to immutable variable `x`
 --> src/main.rs:4:5
  |
2 |     let x = 5;
  |         -
  |         |
  |         first assignment to `x`
  |         help: consider making this binding mutable: `mut x`
3 |     println!("The value of x is: {x}");
4 |     x = 6;
  |     ^^^^^ cannot assign twice to immutable variable

For more information about this error, try `rustc --explain E0384`.
error: could not compile `variables` due to previous error

想要可變要加 mut

let mut x = 5;
x = 6

常量

不允許對常量使用 mut。常量不光默認不可變,它總是不可變。聲明常量使用 const 關(guān)鍵字而不是 let,并且 必須 注明值的類型窟勃。

const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;

隱藏

可以用相同變量名稱來隱藏一個變量,以及重復使用 let 關(guān)鍵字來多次隱藏

fn main() {
    let x = 5;

    let x = x + 1;

    {
        let x = x * 2;
        println!("The value of x in the inner scope is: {x}");
    }

    println!("The value of x is: {x}");
}

隱藏與將變量 mut 的區(qū)別:
1). 隱藏必須使用 let 關(guān)鍵字
2). 當再次使用 let 時逗堵,實際上創(chuàng)建了一個新變量秉氧,我們可以改變值的類型,并且復用這個名字蜒秤,而 mut 不允許我們修改值的類型

元組

用包含在圓括號中的逗號分隔的值列表來創(chuàng)建一個元組汁咏。元組中的每一個位置都有一個類型,而且這些不同值的類型也不必是相同的垦藏。這個例子中使用了可選的類型注解:

fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);
}
  • 解構(gòu)
fn main() {
    let tup = (500, 6.4, 1);

    let (x, y, z) = tup;

    println!("The value of y is: {y}");
}
  • 索引訪問
    我們也可以使用點號(.)后跟值的索引來直接訪問它們梆暖。例如:
fn main() {
    let x: (i32, f64, u8) = (500, 6.4, 1);

    let five_hundred = x.0;

    let six_point_four = x.1;

    let one = x.2;
}

數(shù)組

與元組不同,數(shù)組中的每個元素的類型必須相同掂骏,長度是固定的

  • 編寫數(shù)組類型
    在方括號中包含每個元素的類型轰驳,后跟分號,再后跟數(shù)組元素的數(shù)量弟灼。
let a: [i32; 5] = [1, 2, 3, 4, 5];

還可以通過在方括號中指定初始值加分號再加元素個數(shù)的方式來創(chuàng)建一個每個元素都為相同值的數(shù)組:

let a = [3; 5];
// 等價于
let a = [3, 3, 3, 3, 3];
  • 訪問數(shù)組
fn main() {
    let a = [1, 2, 3, 4, 5];

    let first = a[0]; // 1
    let second = a[1]; // 2
}

函數(shù)

所有字母都是小寫并使用下劃線分隔單詞

fn main() {
    println!("Hello, world!");

    another_function();
}

fn another_function() {
    println!("Another function.");
}
  • 參數(shù)
    在函數(shù)簽名中级解,必須 聲明每個參數(shù)的類型
fn main() {
    another_function(5);
}

fn another_function(x: i32) {
    println!("The value of x is: {x}");
}

fn main() {
    print_labeled_measurement(5, 'h');
}

fn print_labeled_measurement(value: i32, unit_label: char) {
    println!("The measurement is: {value}{unit_label}");
}
  • 具有返回值的函數(shù)
    在箭頭(->)后聲明它的類型。在 Rust 中田绑,函數(shù)的返回值等同于函數(shù)體最后一個表達式的值勤哗。
fn five() -> i32 {
    5
}

fn main() {
    let x = five();

    println!("The value of x is: {x}");
}

if 表達式

if 里的條件判斷必須是 bool 值

fn main() {
    let number = 3;

    if number < 5 {
        println!("condition was true");
    } else {
        println!("condition was false");
    }
}
  • 在 let 語句中使用 if
fn main() {
    let condition = true;
    let number = if condition { 5 } else { 6 };

    println!("The value of number is: {number}");
}

loop 循環(huán)

可以使用 break 跳出循環(huán)

fn main() {
    let mut counter = 0;

    let result = loop {
        counter += 1;

        if counter == 10 {
            break counter * 2;
        }
    };

    println!("The result is {result}");
}

while 循環(huán)

fn main() {
    let mut number = 3;

    while number != 0 {
        println!("{number}!");

        number -= 1;
    }

    println!("LIFTOFF!!!");
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市掩驱,隨后出現(xiàn)的幾起案子芒划,更是在濱河造成了極大的恐慌冬竟,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件民逼,死亡現(xiàn)場離奇詭異泵殴,居然都是意外死亡,警方通過查閱死者的電腦和手機拼苍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門笑诅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人疮鲫,你說我怎么就攤上這事吆你。” “怎么了俊犯?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵妇多,是天一觀的道長。 經(jīng)常有香客問我燕侠,道長砌梆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任贬循,我火速辦了婚禮,結(jié)果婚禮上桃序,老公的妹妹穿的比我還像新娘杖虾。我一直安慰自己,他們只是感情好媒熊,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布奇适。 她就那樣靜靜地躺著,像睡著了一般芦鳍。 火紅的嫁衣襯著肌膚如雪嚷往。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天柠衅,我揣著相機與錄音皮仁,去河邊找鬼。 笑死菲宴,一個胖子當著我的面吹牛贷祈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喝峦,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼势誊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谣蠢?” 一聲冷哼從身側(cè)響起粟耻,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤查近,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挤忙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霜威,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年饭玲,在試婚紗的時候發(fā)現(xiàn)自己被綠了侥祭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茄厘,死狀恐怖矮冬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情次哈,我是刑警寧澤胎署,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站窑滞,受9級特大地震影響琼牧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哀卫,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一巨坊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧此改,春花似錦趾撵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至移剪,卻和暖如春究珊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纵苛。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工剿涮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赶站。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓幔虏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贝椿。 傳聞我的和親對象是個殘疾皇子想括,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容