Skip to main content

qubit_fs/traits/
directory_stream_ext.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2026 Haixing Hu.
4 *
5 *    SPDX-License-Identifier: Apache-2.0
6 *
7 *    Licensed under the Apache License, Version 2.0.
8 *
9 ******************************************************************************/
10//! Convenience methods for directory streams.
11
12use crate::{
13    DirEntry,
14    DirectoryStream,
15    FsResult,
16};
17
18/// Convenience methods for directory streams.
19pub trait DirectoryStreamExt {
20    /// Collects all remaining entries.
21    ///
22    /// # Returns
23    /// Entries produced by the stream.
24    ///
25    /// # Errors
26    /// Returns [`crate::FsError`] when listing fails before the stream ends.
27    fn collect_entries(self) -> FsResult<Vec<DirEntry>>;
28}
29
30impl DirectoryStreamExt for Box<dyn DirectoryStream> {
31    fn collect_entries(mut self) -> FsResult<Vec<DirEntry>> {
32        let mut entries = Vec::new();
33        while let Some(entry) = self.next_entry()? {
34            entries.push(entry);
35        }
36        Ok(entries)
37    }
38}