欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請碼778899分享:Rust 編程小技巧摘選(6)

柚子快報(bào)邀請碼778899分享:Rust 編程小技巧摘選(6)

http://yzkb.51969.com/

目錄

Rust 編程小技巧(6)

1. 打印字符串

2. 重復(fù)打印字串

3. 自定義函數(shù)

4. 遍歷動態(tài)數(shù)組

5. 遍歷二維數(shù)組

6. 同時(shí)遍歷索引和值

7.?檢查數(shù)組是否包含某個(gè)值

8. 二維矩陣中查找某個(gè)值

附:迭代器方法的區(qū)別

Rust 編程小技巧(6)

1. 打印字符串

fn main() {

println!("Hello, world");

let s = "Rust";

print!("{}", s);

println!();

}

Rust 打印主要用宏 print!()、println!(),打印宏的占位符使用?{}。

2. 重復(fù)打印字串

有多種方法,比如使用:循環(huán)、string.repeat()、vector.join()等等。

fn main() {

for _ in 0..8 {

print!("rust");

}

println!("\n{}", "rust".repeat(8));

let s = vec!["rust"; 8];

println!("{:?}", s);

println!("{}", s.join(""));

println!("{}", s.join("."));

}

輸出:

rustrustrustrustrustrustrustrust rustrustrustrustrustrustrustrust ["rust", "rust", "rust", "rust", "rust", "rust", "rust", "rust"] rustrustrustrustrustrustrustrust rust.rust.rust.rust.rust.rust.rust.rust

3. 自定義函數(shù)

比如,一個(gè)整數(shù)的平方、絕對值

fn square(x: i32) -> i32 {

x * x

}

fn abs(x: i32) -> i32 {

if x < 0 {

return -x;

}

x

}

fn main() {

let n = square(9);

println!("{}", n);

println!("{}", abs(-10));

}

rust 函數(shù)的返回關(guān)鍵字 return,在最后的出口可以省略,只需一個(gè)表達(dá)式(不用分號結(jié)尾)。

4. 遍歷動態(tài)數(shù)組

.into_iter() 轉(zhuǎn)迭代器

fn main() {

let items = vec![11, 22, 33];

for x in items.clone().into_iter() {

do_something(x);

}

items.clone().into_iter().for_each(|x| do_something(x));

println!("{:?}", items);

}

fn do_something(n: i64) {

println!("Number {}", n)

}

輸出:

Number 11 Number 22 Number 33 Number 11 Number 22 Number 33 [11, 22, 33]

5. 遍歷二維數(shù)組

.iter() 創(chuàng)建迭代器?

fn main() {

let vec = vec![vec![1, 2], vec![3, 4], vec![5, 6]];

for outer_iter in vec.iter() {

for inner_iter in outer_iter.iter() {

print!("{} ", inner_iter);

}

}

println!();

vec.iter().for_each(|x| x.iter().for_each(|y| print!("{} ", y)));

println!();

}

6. 同時(shí)遍歷索引和值

.enumerate() 枚舉

fn main() {

test1();

test2();

}

fn test1() {

let items = ["a", "b", "c"];

for (i, x) in items.iter().enumerate() {

println!("Item {} = {}", i, x);

}

}

fn test2() {

let items = ["a", "b", "c"];

items.iter().enumerate().for_each(|(i, x)| {

println!("Item {} = {}", i, x);

});

}

7.?檢查數(shù)組是否包含某個(gè)值

代碼1:for ... in 遍歷

fn contain(list: &[i32], num: i32) {

let mut flag = false;

for &i in list {

if i == num {

flag = true;

break;

}

}

if flag {

println!("{:?} 包含 {}", list, num);

} else {

println!("{:?} 不含 {}", list, num);

}

}

fn main() {

let list = [1, 2, 3];

let num = 0;

contain(&list, num);

let num = 2;

contain(&list, num);

}

代碼2: 迭代器 + any()方法

fn contain(list: &[i32], num: i32) {

let flag = list.iter().any(|&item| item == num);

if flag {

println!("{:?} 包含 {}", list, num);

} else {

println!("{:?} 不含 {}", list, num);

}

}

fn main() {

let list = [1, 2, 3];

let num = 0;

contain(&list, num);

let num = 2;

contain(&list, num);

}

?代碼3: 直接用包含方法 contains()

fn contain(list: &[i32], num: i32) {

if list.contains(&num) {

println!("{:?} 包含 {}", list, num);

} else {

println!("{:?} 不含 {}", list, num);

}

}

fn main() {

let list = [1, 2, 3];

let num = 0;

contain(&list, num);

let num = 2;

contain(&list, num);

}

輸出:

[1, 2, 3] 不含 0 [1, 2, 3] 包含 2?

8. 二維矩陣中查找某個(gè)值

fn search(m: &Vec>, x: &T) -> Option<(usize, usize)> {

for (i, row) in m.iter().enumerate() {

for (j, col) in row.iter().enumerate() {

if *col == *x {

return Some((i, j));

}

}

}

None

}

fn main() {

let v = vec![

vec![1, 2, 3],

vec![4, 5, 6],

vec![7, 8, 9],

];

println!("{:?}", search(&v, &6));

println!("{:?}", search(&v, &0));

}

輸出:

Some((1, 2)) None??

附:迭代器方法的區(qū)別

.into_iter() 和 .iter() 兩個(gè)方法都用于創(chuàng)建迭代器,它們的區(qū)別在于:

1.所有權(quán)轉(zhuǎn)移:.into_iter()?方法會消耗當(dāng)前的集合,并將所有權(quán)轉(zhuǎn)移給迭代器。這意味著在迭代完成后,原集合將不再可用。而?.iter()?方法不會消耗集合,它只是創(chuàng)建一個(gè)新的迭代器,你可以在迭代完成后繼續(xù)使用原集合。

2.消耗和產(chǎn)生元素:.into_iter()?會消耗集合中的元素,并將它們放入迭代器中。這意味著每次調(diào)用迭代器的?next()?方法都會消耗集合中的一個(gè)元素。而?.iter()?只是產(chǎn)生元素的引用,并不會消耗集合中的元素。

3.用途:當(dāng)你需要遍歷集合中的元素并獲取它們的所有權(quán)時(shí),應(yīng)該使用?.into_iter()。當(dāng)你只需要讀取集合中的元素而不消耗它們時(shí),應(yīng)該使用?.iter()。

?相關(guān)閱讀:

Rust 編程小技巧摘選(1)_Hann Yang的博客-CSDN博客

Rust 編程小技巧摘選(2)_Hann Yang的博客-CSDN博客

Rust 編程小技巧摘選(3)_Hann Yang的博客-CSDN博客

Rust 編程小技巧摘選(4)_Hann Yang的博客-CSDN博客

Rust 編程小技巧摘選(5)_Hann Yang的博客-CSDN博客

柚子快報(bào)邀請碼778899分享:Rust 編程小技巧摘選(6)

http://yzkb.51969.com/

精彩鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18820474.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄