// =============================================================================
// Copyright (c) 2026 Haixing Hu.
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0.
// =============================================================================
// facade.
//! Provider-side synchronous directory enumeration sessions.
use crate::error::FsResult;
use crate::metadata::DirEntry;
/// Provider directory enumeration session.
///
/// # Examples
///
/// ```
/// use qubit_fs::spi::DirectoryStreamSpi;
///
/// fn accepts_session<T: DirectoryStreamSpi>() {}
/// ```
pub trait DirectoryStreamSpi: Send {
/// Returns the next lazy directory entry.
///
/// # Returns
/// `Some(entry)` for the next item or `None` after enumeration completes.
///
/// # Errors
/// Returns a provider enumeration failure with filesystem context.
fn next_entry(&mut self) -> FsResult<Option<DirEntry>>;
}