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}