use crateInputToken;
/// A low-level trait representing a source of input tokens.
///
/// `InputSource` is the bridge between a raw token iterator and the [`crate::input::core::Input`]
/// type. Implementors are responsible for producing tokens one at a time, supporting
/// non-destructive peeking, and reporting an optional source name (e.g., a file path) used in
/// error messages.
///
/// This trait is not intended to be used directly by parser authors. Instead, use
/// [`crate::input::core::Input`], which wraps an `InputSource` and exposes the full parser
/// interface including lookahead and position tracking.
///
/// Two built-in implementations are available:
/// - [`crate::input::string::StringSource`]: used for string-based parsing, it wraps a `char`
/// iterator.
/// - [`crate::input::token::TokenInputSource`]: used for token-based parsing, regardless of what
/// the underlying token type is (as long as it implements [`InputToken`]).