隱私權政策

搜尋此網誌

技術提供:Blogger.

關於我自己

我的相片
目前從事軟體相關行業,喜歡閱讀、健身、喝調酒。習慣把遇到的問題記下來,每天做一些整理方便自己以後查。 Python、Rust、Kotlin等程式語言皆為自學,目前比較著重在Rust語言,歡迎一起討論。

2023年11月7日 星期二

Rust 迭代chain概述 - 連結兩個迭代器


chain

這篇講解Chain

可用於迭代器

文件[1]這樣寫

一個用於連結兩個迭代器的迭代器

    fn chain<U>(self, other: U) -> Chain<Self, U>
    where
        Self: Sized,
        U: IntoIterator<Item = Self::Item>,

self為一個迭代器

other也為一個迭代器

最後輸出連結後的結果,還是一個迭代器


例子

這邊有一個基本的用法

假設我有兩個數組

希望把它們合併

    let numbers1 = vec![1, 2, 3];
    let numbers2 = vec![4, 5, 6];
    // 連結兩個迭代器
    let combined_iter = numbers1
                        .iter()
                        .chain(numbers2.iter())
                        .collect::<Vec<_>>();
    for num in combined_iter {
        println!("Number: {}", num);
    }
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5 Number: 6

第一行與第二行為產生數組

第四行則是連結兩個數組

將numbers1放入迭代器,並透過chain連結放入迭代器的numbers2,最後透過collect回傳Vec

並使用for迴圈傳出連結後的結果

切片例子

而chain也可以用於切片

    let str1 = "Hello";
    let str2 = "World!";

    // 使用 chain 連結切片字串
    let combined_string = str1.chars().chain(str2.chars()).collect::<String>();
    println!("Combined string: {}", combined_string);

Combined string: HelloWorld!

一樣兩個切片

透過char即可逐個搜索切片內的字,

而後使用chain將兩個切片連結後最終呈現HelloWorld!


參考資料

[1] https://doc.rust-lang.org/stable/std/iter/struct.Chain.html

0 comments:

張貼留言