日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

rust学习笔记(4)

發(fā)布時(shí)間:2025/3/13 编程问答 38 如意码农
生活随笔 收集整理的這篇文章主要介紹了 rust学习笔记(4) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

流程控制

if

    if n < 0 {
print!("{} is negative", n);
} else if n > 0 {
print!("{} is positive", n);
} else {
print!("{} is zero", n);
}

if 語(yǔ)句也可以作為變量計(jì)算的代碼塊

    let big_n =
if n < 10 && n > -10 {
println!(", and is a small number, increase ten-fold"); // 這個(gè)表達(dá)式返回一個(gè) `i32` 類(lèi)型。
10 * n
} else {
println!(", and is a big number, half the number"); // 這個(gè)表達(dá)式也必須返回一個(gè) `i32` 類(lèi)型。
n / 2
// 試一試 ^ 試著加上一個(gè)分號(hào)來(lái)結(jié)束這條表達(dá)式。
};
// ^ 不要忘記在這里加上一個(gè)分號(hào)!所有的 `let` 綁定都需要它。

loop

    // 無(wú)限循環(huán)
loop {
count += 1; if count == 3 {
println!("three"); // 跳過(guò)這次迭代的剩下內(nèi)容
continue;
} println!("{}", count); if count == 5 {
println!("OK, that's enough"); // 退出循環(huán)
break;
}
}

默認(rèn)是無(wú)線循環(huán), 需要手動(dòng)break

嵌套loop

loop可以嵌套, 在嵌套的時(shí)候可以給每個(gè)loop打上對(duì)應(yīng)的標(biāo)簽

標(biāo)簽可以用來(lái)識(shí)別是哪個(gè)loop, 這可以幫助 break 和 continue

#![allow(unreachable_code)]

fn main() {
'outer: loop {
println!("Entered the outer loop"); 'inner: loop {
println!("Entered the inner loop"); // 這只是中斷內(nèi)部的循環(huán)
//break; // 這會(huì)中斷外層循環(huán)
break 'outer;
} println!("This point will never be reached");
} println!("Exited the outer loop");
}

break返回值

在loop中可以使用break返回值

fn main() {
let mut counter = 0; let result = loop {
counter += 1; if counter == 10 {
break counter * 2;
}
}; assert_eq!(result, 20);
}

while

一個(gè)帶上條件的循環(huán), 寫(xiě)作為 while n < 101 {

for

    // `n` 將在每次迭代中分別取 1, 2, ..., 100
for n in 1..101 {

不包含101

for n in 1..=100 {

包含100

迭代器

可以和迭代器進(jìn)行操作

使用iter和iter_mut函數(shù), 采用借用的方式

fn main() {
let names = vec!["Bob", "Frank", "Ferris"]; for name in names.iter() {
match name {
&"Ferris" => println!("There is a rustacean among us!"),
_ => println!("Hello {}", name),
}
}
}
  • into_iter 函數(shù)會(huì)消耗元素, 這不是借用, 用了之后就丟失了

match

匹配變量的情況選擇對(duì)應(yīng)的分支

這個(gè)代碼可以用來(lái)作為處理異常的情況

    let num = 13;
print!("{} 是", num);
match num % 2 {
0 => {
println!("偶數(shù)")
}
1 => println!("奇數(shù)"),
_ => println!("未知"),
}

使用 | 作為或者操作符

使用 _ 用來(lái)處理其他情況

可以使用范圍操作符

變量賦值

    let binary = match boolean {
// match 分支必須覆蓋所有可能的值
false => 0,
true => 1,
// 試一試 ^ 將其中一條分支注釋掉
};

可以用來(lái)快速賦值

解構(gòu)

    let triple = (0, -2, 3);
// 試一試 ^ 將不同的值賦給 `triple` println!("Tell me about {:?}", triple);
// match 可以解構(gòu)一個(gè)元組
match triple {
// 解構(gòu)出第二個(gè)和第三個(gè)元素
(0, y, z) => println!("First is `0`, `y` is {:?}, and `z` is {:?}", y, z),
(1, ..) => println!("First is `1` and the rest doesn't matter"),
// `..` 可用來(lái)忽略元組的其余部分
_ => println!("It doesn't matter what they are"),
// `_` 表示不將值綁定到變量
}

因?yàn)樵M被解構(gòu)之后可以作為匹配的條件

enum

可以用來(lái)操作枚舉類(lèi), 比如處理異常

枚舉類(lèi)內(nèi)部是可以攜帶值的

引用

    match reference {
// 如果用 `&val` 這個(gè)模式去匹配 `reference`,就相當(dāng)于做這樣的比較:
// `&i32`(譯注:即 `reference` 的類(lèi)型)
// `&val`(譯注:即用于匹配的模式)
// ^ 我們看到,如果去掉匹配的 `&`,`i32` 應(yīng)當(dāng)賦給 `val`。
// 譯注:因此可用 `val` 表示被 `reference` 引用的值 4。
&val => println!("Got a value via destructuring: {:?}", val),
}

guard

fn main() {
let pair = (2, -2);
// 試一試 ^ 將不同的值賦給 `pair` println!("Tell me about {:?}", pair);
match pair {
(x, y) if x == y => println!("These are twins"),
// ^ `if` 條件部分是一個(gè)衛(wèi)語(yǔ)句
(x, y) if x + y == 0 => println!("Antimatter, kaboom!"),
(x, _) if x % 2 == 1 => println!("The first one is odd"),
_ => println!("No correlation..."),
}
}

可以使用 if 語(yǔ)句幫助進(jìn)行條件選擇

other

有一些類(lèi)似 if letwhile let 的運(yùn)算符不贅述, 為了減少嵌套和使得代碼更加美觀的操作不是必須的

總結(jié)

以上是生活随笔為你收集整理的rust学习笔记(4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。