Rust 程式設計視訊教程(進階)——003_2 介面卡

linghuyichong發表於2020-01-09

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

1、消費介面卡
Iterator trait有一系列由標準庫提供的預設實現的方法,有些方法呼叫了next方法,這些呼叫next方法的方法被稱為消費介面卡。

例子如下:

let v1 = vec![1, 2, 3];
let v1_iter = v1.iter();
let total: i32 = v1_iter.sum();//呼叫消費介面卡sum來求和

2、迭代器介面卡
Iterator trait中定義了一類方法,被稱為迭代器介面卡,即允許我們將當前迭代器變為不同型別的迭代器。
例子:

let v1: Vec<i32> = vec![1, 2, 3];
//v1.iter().map(|x| x + 1); //建立了一個新的迭代器,但是由於迭代器的惰性,什麼也不會發生
let v2: Vec<_> = v1.iter().map(|x| x + 1).collect(); //必須要消費迭代器才會生效,v2 = vec![2, 3, 4]

例子:

fn main() {
    let v1: Vec<i32> = vec![1, 11, 5, 34, 2, 10];
    let v2: Vec<i32> = v1.into_iter().filter(|x| *x > 5).collect();
    println!("v2 = {:?}", v2);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章