Skip to main content

BorrowedInput

Trait BorrowedInput 

Source
pub trait BorrowedInput<'a>: Input {
    // Required method
    fn slice_borrowed(&self, start: usize, end: usize) -> Option<&'a str>;
}
Expand description

A trait for inputs that can provide borrowed slices with a specific lifetime.

This trait enables zero-copy (Cow::Borrowed) token values for inputs that keep a stable backing string. The key difference from Input::slice_bytes is that this method returns a slice with the input’s original lifetime 'a, not tied to &self.

For inputs that support zero-copy (like str::StrInput), this returns Some(&'a str). For streaming inputs that don’t have stable backing storage, this returns None.

Required Methods§

Source

fn slice_borrowed(&self, start: usize, end: usize) -> Option<&'a str>

Return a borrowed slice of the underlying source between two byte offsets.

Unlike Input::slice_bytes, this returns a slice with the input’s lifetime 'a, allowing the slice to outlive the borrow of &self.

start and end are byte offsets as returned by Input::byte_offset. The interval is half-open: [start, end).

Returns None if the input does not support zero-copy slicing.

Implementors§

Source§

impl<'a> BorrowedInput<'a> for StrInput<'a>

Source§

impl<T: Iterator<Item = char>> BorrowedInput<'static> for BufferedInput<T>

BufferedInput does not support zero-copy slicing since it’s a streaming input without stable backing storage.