隱私權政策

搜尋此網誌

技術提供:Blogger.

關於我自己

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

2024年1月17日 星期三

Rust 迭代 skip - 跳過迭代器前幾個元素


迭代skip

有時候迭代器想要跳過前幾個元素

例如說網頁、路徑等等

可能某些情況下前幾個並不是想要的

這時候就可以用skip跳過


文件這樣解釋

skip[1]

fn skip(self, n: usize) -> Skip<Self>
where
    Self: Sized,

自身為迭代器

可以輸入一個數字,此數字表示前幾個元素捨棄

最後輸出一個迭代器


例子

fn main() {
    let data = [1, 2, 3];
    let res = data.iter().skip(2).collect::<Vec<_>>();
    println!("Result: {:?}", res);
}
Result: [3]

假設有個data是1 2 3

放入迭代器

去除掉前兩個

就只會剩下3


實際應用

我最常是用在看資料夾內所有東西上

因為有些做法會連資料夾本身也算進去

而不是只會顯示資料夾裡面的東西

例如

use walkdir::WalkDir;

fn main() {
    // 指定要遍歷的資料夾路徑
    let folder_path = "src";

    // 使用 WalkDir 遍歷資料夾
    for entry in WalkDir::new(folder_path) {
        if let Ok(entry) = entry {
            let path = entry.path();
            println!("Full Path: {:?}", path);
        }
    }
}
Full Path: "src" Full Path: "src\\main.rs"

使用WalkDir[2]遍歷資料夾內的東西

但如果只是這樣打

可以看到輸出結果為src和src\main.rs

連資料夾本身也算進去了

這可能不是我想要的結果

因此可以使用skip跳過資料夾本身

use walkdir::WalkDir;

fn main() {
    // 指定要遍歷的資料夾路徑
    let folder_path = "src";

    // 使用 WalkDir 遞迴地遍歷資料夾
    for entry in WalkDir::new(folder_path).into_iter().skip(1) {
        if let Ok(entry) = entry {
            let path = entry.path();
            println!("Full Path: {:?}", path);
        }
    }
}
Full Path: "src\\main.rs"

迭代的時候跳過第一個資料夾

從資料夾內部開始輸出


參考資料

[1] https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.skip

[2] https://docs.rs/walkdir/latest/walkdir/

0 comments:

張貼留言