qubit_fs/spi/async_directory_stream_session.rs
1// =============================================================================
2// Copyright (c) 2026 Haixing Hu.
3//
4// SPDX-License-Identifier: Apache-2.0
5//
6// Licensed under the Apache License, Version 2.0.
7// =============================================================================
8//! Provider-side asynchronous directory enumeration sessions.
9
10use super::SpiFuture;
11use crate::error::FsResult;
12use crate::metadata::DirEntry;
13
14/// Provider session underlying a concrete
15/// [`crate::directory::AsyncDirectoryStream`].
16///
17/// # Examples
18///
19/// ```
20/// use qubit_fs::spi::AsyncDirectoryStreamSession;
21///
22/// fn accepts_session<T: AsyncDirectoryStreamSession>() {}
23/// ```
24pub trait AsyncDirectoryStreamSession: Send {
25 /// Asynchronously reads the next directory entry or provider page.
26 ///
27 /// # Returns
28 /// A future resolving to one entry or `None` at end of enumeration.
29 fn next_entry_async(&mut self) -> SpiFuture<'_, FsResult<Option<DirEntry>>>;
30}