Skip to main content

ListView

Struct ListView 

Source
pub struct ListView<'a, T> {
    pub buf: &'a [u8],
    pub offset: usize,
    pub len: usize,
    pub back: usize,
    pub next: usize,
    pub skip: &'a BitMask,
    /* private fields */
}
Expand description

A zero-copy, double-ended iterator and random-access view over an array stored in a flatbuffer.

§Memory layout

For inline elements (T::MODE == Inline):

offset → [elem_0_bytes][elem_1_bytes]...[elem_{len-1}_bytes]

For offset elements (T::MODE == Offset):

offset → [fwd_off_0: u32][fwd_off_1: u32]...[fwd_off_{n-1}: u32]
               ↓               ↓
           [elem_0 data]   [elem_1 data] ...

Each forward offset is relative to its own position: abs_pos(i) = (offset + i*4) + forward_offset[i].

§Fields

  • buf — the buffer this view borrows from.
  • offset — absolute byte position of the first element (or offset table).
  • len — total number of elements including any skipped ones.
  • next / back — iterator cursors for Iterator and DoubleEndedIterator. Both are indices into the list (0-based), starting at 0 / len and converging as elements are consumed.
  • skip — unordered set of indices to omit during iteration. Empty (&[]) when no rows are skipped; the fast path is a single is_empty() check so the non-skipping case is unchanged.

§Skip list

Call with_skip to attach a skip list after construction. The slice does not need to be sorted. get and total_len / is_empty are unaffected — they operate on the raw list. Only the iterator methods (next, next_back) honour the skip list.

When the skip list is active ExactSizeIterator is not available because the exact remaining count depends on how many skip indices fall within [next, back), which is O(k) to compute. size_hint returns a conservative upper bound of back - next.

Fields§

§buf: &'a [u8]§offset: usize§len: usize§back: usize§next: usize§skip: &'a BitMask

Unordered indices to skip during iteration. &[] when not skipping.

Implementations§

Source§

impl<'a, T> ListView<'a, T>
where T: ReadAt<'a>,

Source

pub fn new(buf: &'a [u8], offset: usize, len: usize) -> ListView<'a, T>

Construct a new ListView anchored at offset with len elements. No rows are skipped by default; call with_skip to attach a skip list.

Source

pub fn with_skip(self, skip: &'a BitMask) -> ListView<'a, T>

Attach an unordered skip list to this view.

Elements whose index appears anywhere in skip are silently omitted by next() and next_back(). The slice does not need to be sorted. get, total_len, and is_empty are not affected.

Replaces any previously attached skip list.

Source

pub fn total_len(&self) -> usize

Total number of elements in this list, including skipped and already iterated ones.

Source

pub fn is_empty(&self) -> bool

Return true if the list contains no elements at all (ignores skip list).

Source

pub fn abs_pos(&self, index: usize) -> usize

Compute the absolute byte position of element index.

For inline types: offset + index * size_of::<T>(). For offset types: follows the forward-offset entry at offset + index * 4 to get the element’s absolute position.

Source

pub fn get(&self, index: usize) -> <T as ReadAt<'a>>::ReadOutput

Random access to element at index. Panics if index >= len. Ignores the skip list — always returns the element at that raw index.

For Offset- and Union-mode types a forward-offset entry of 0 signals an absent element; this returns [T::default_output()] with no buffer read beyond the entry itself. Inline types (scalars, structs) are always present and skip this check entirely — the branch folds away at compile time because T::MODE is a const.

Source

pub fn last_offset(&self) -> usize

Absolute position of the last element.

Used by merge_string_list to compute the end of the string pool: last_offset() + 4 + u32::read_at(buf, last_offset()) gives the exclusive end of the last string’s bytes.

Source

pub fn read_last(&self) -> <T as ReadAt<'a>>::ReadOutput

Decode and return the last element without advancing the iterator. Ignores the skip list.

Trait Implementations§

Source§

impl<'a, T> Debug for ListView<'a, T>
where T: ReadAt<'a>, <T as ReadAt<'a>>::ReadOutput: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a, T> Default for ListView<'a, T>

Source§

fn default() -> ListView<'a, T>

Returns the “default value” for a type. Read more
Source§

impl<'a, T> DoubleEndedIterator for ListView<'a, T>
where T: ReadAt<'a>,

Source§

fn next_back(&mut self) -> Option<<T as ReadAt<'a>>::ReadOutput>

Removes and returns an element from the end of the iterator. Read more
Source§

fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator from the back by n elements. Read more
1.37.0 · Source§

fn nth_back(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element from the end of the iterator. Read more
1.27.0 · Source§

fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
where Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Output = B>,

This is the reverse version of Iterator::try_fold(): it takes elements starting from the back of the iterator. Read more
1.27.0 · Source§

fn rfold<B, F>(self, init: B, f: F) -> B
where Self: Sized, F: FnMut(B, Self::Item) -> B,

An iterator method that reduces the iterator’s elements to a single, final value, starting from the back. Read more
1.27.0 · Source§

fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator from the back that satisfies a predicate. Read more
Source§

impl<'a, T> ExactSizeIterator for ListView<'a, T>
where T: ReadAt<'a>,

ExactSizeIterator is only implemented when no skip list is active, because once skips are present the exact remaining count requires an O(k) scan over the skip slice to count how many entries fall within [next, back).

If you need the precise remaining count with an active skip list, compute it as: (back - next) - skip.iter().filter(|&&i| i >= next && i < back).count()

Source§

fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
Source§

fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (exact_size_is_empty)
Returns true if the iterator is empty. Read more
Source§

impl<'a> From<ListView<'a, String>> for Vec<String>

Collect a ListView<String> into an owned Vec<String>.

Source§

fn from(view: ListView<'a, String>) -> Vec<String>

Converts to this type from the input type.
Source§

impl<'a, T> From<ListView<'a, T>> for Vec<T>
where T: ReadAt<'a, ReadOutput = T> + Clone,

Collect a ListView<T> into an owned Vec<T> for scalar/Pod types.

Source§

fn from(view: ListView<'a, T>) -> Vec<T>

Converts to this type from the input type.
Source§

impl<'a, T> Iterator for ListView<'a, T>
where T: ReadAt<'a>,

Source§

fn next(&mut self) -> Option<<T as ReadAt<'a>>::ReadOutput>

Yield the next element from the front (lowest index), honouring the skip list.

Source§

fn size_hint(&self) -> (usize, Option<usize>)

Upper bound is back - next; may be an overcount when a skip list is active because some of those indices will be silently stepped over.

Source§

type Item = <T as ReadAt<'a>>::ReadOutput

The type of the elements being iterated over.
Source§

fn next_chunk<const N: usize>( &mut self, ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · Source§

fn count(self) -> usize
where Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · Source§

fn last(self) -> Option<Self::Item>
where Self: Sized,

Consumes the iterator, returning the last element. Read more
Source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · Source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · Source§

fn step_by(self, step: usize) -> StepBy<Self>
where Self: Sized,

Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more
1.0.0 · Source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · Source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
Source§

fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
where Self: Sized, Self::Item: Clone,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places a copy of separator between items of the original iterator. Read more
Source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where Self: Sized, G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator between items of the original iterator. Read more
1.0.0 · Source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where Self: Sized, F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each element. Read more
1.21.0 · Source§

fn for_each<F>(self, f: F)
where Self: Sized, F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · Source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element should be yielded. Read more
1.0.0 · Source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where Self: Sized, F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · Source§

fn enumerate(self) -> Enumerate<Self>
where Self: Sized,

Creates an iterator which gives the current iteration count as well as the next value. Read more
1.0.0 · Source§

fn peekable(self) -> Peekable<Self>
where Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See their documentation for more information. Read more
1.0.0 · Source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · Source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · Source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where Self: Sized, P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · Source§

fn skip(self, n: usize) -> Skip<Self>
where Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · Source§

fn take(self, n: usize) -> Take<Self>
where Self: Sized,

Creates an iterator that yields the first n elements, or fewer if the underlying iterator ends sooner. Read more
1.0.0 · Source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where Self: Sized, F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but unlike fold, produces a new iterator. Read more
1.0.0 · Source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where Self: Sized, U: IntoIterator, F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.29.0 · Source§

fn flatten(self) -> Flatten<Self>
where Self: Sized, Self::Item: IntoIterator,

Creates an iterator that flattens nested structure. Read more
Source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where Self: Sized, F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over self and returns an iterator over the outputs of f. Like slice::windows(), the windows during mapping overlap as well. Read more
1.0.0 · Source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · Source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where Self: Sized, F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adapter for this instance of Iterator. Read more
1.0.0 · Source§

fn collect<B>(self) -> B
where B: FromIterator<Self::Item>, Self: Sized,

Transforms an iterator into a collection. Read more
Source§

fn try_collect<B>( &mut self, ) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
where Self: Sized, Self::Item: Try, <Self::Item as Try>::Residual: Residual<B>, B: FromIterator<<Self::Item as Try>::Output>,

🔬This is a nightly-only experimental API. (iterator_try_collect)
Fallibly transforms an iterator into a collection, short circuiting if a failure is encountered. Read more
Source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where E: Extend<Self::Item>, Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · Source§

fn partition<B, F>(self, f: F) -> (B, B)
where Self: Sized, B: Default + Extend<Self::Item>, F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
Source§

fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
where T: 'a, Self: Sized + DoubleEndedIterator<Item = &'a mut T>, P: FnMut(&T) -> bool,

🔬This is a nightly-only experimental API. (iter_partition_in_place)
Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. Returns the number of true elements found. Read more
Source§

fn is_partitioned<P>(self, predicate: P) -> bool
where Self: Sized, P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, such that all those that return true precede all those that return false. Read more
1.27.0 · Source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Output = B>,

An iterator method that applies a function as long as it returns successfully, producing a single, final value. Read more
1.27.0 · Source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where Self: Sized, F: FnMut(Self::Item) -> R, R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. Read more
1.0.0 · Source§

fn fold<B, F>(self, init: B, f: F) -> B
where Self: Sized, F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, returning the final result. Read more
1.51.0 · Source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where Self: Sized, F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing operation. Read more
Source§

fn try_reduce<R>( &mut self, f: impl FnMut(Self::Item, Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where Self: Sized, R: Try<Output = Self::Item>, <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · Source§

fn all<F>(&mut self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · Source§

fn any<F>(&mut self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · Source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · Source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where Self: Sized, F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns the first non-none result. Read more
Source§

fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where Self: Sized, R: Try<Output = bool>, <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns the first true result or the first error. Read more
1.0.0 · Source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where Self: Sized, P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.0.0 · Source§

fn rposition<P>(&mut self, predicate: P) -> Option<usize>
where P: FnMut(Self::Item) -> bool, Self: Sized + ExactSizeIterator + DoubleEndedIterator,

Searches for an element in an iterator from the right, returning its index. Read more
1.0.0 · Source§

fn max(self) -> Option<Self::Item>
where Self: Sized, Self::Item: Ord,

Returns the maximum element of an iterator. Read more
1.0.0 · Source§

fn min(self) -> Option<Self::Item>
where Self: Sized, Self::Item: Ord,

Returns the minimum element of an iterator. Read more
1.6.0 · Source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the specified function. Read more
1.15.0 · Source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the specified comparison function. Read more
1.6.0 · Source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the specified function. Read more
1.15.0 · Source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the specified comparison function. Read more
1.0.0 · Source§

fn rev(self) -> Rev<Self>
where Self: Sized + DoubleEndedIterator,

Reverses an iterator’s direction. Read more
1.0.0 · Source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where FromA: Default + Extend<A>, FromB: Default + Extend<B>, Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · Source§

fn copied<'a, T>(self) -> Copied<Self>
where T: Copy + 'a, Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · Source§

fn cloned<'a, T>(self) -> Cloned<Self>
where T: Clone + 'a, Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
1.0.0 · Source§

fn cycle(self) -> Cycle<Self>
where Self: Sized + Clone,

Repeats an iterator endlessly. Read more
Source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · Source§

fn sum<S>(self) -> S
where Self: Sized, S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · Source§

fn product<P>(self) -> P
where Self: Sized, P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
1.5.0 · Source§

fn cmp<I>(self, other: I) -> Ordering
where I: IntoIterator<Item = Self::Item>, Self::Item: Ord, Self: Sized,

Lexicographically compares the elements of this Iterator with those of another. Read more
Source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more
1.5.0 · Source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Lexicographically compares the PartialOrd elements of this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. As soon as an order can be determined, the evaluation stops and a result is returned. Read more
Source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more
1.5.0 · Source§

fn eq<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are equal to those of another. Read more
Source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of another with respect to the specified equality function. Read more
1.5.0 · Source§

fn ne<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are not equal to those of another. Read more
1.5.0 · Source§

fn lt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically less than those of another. Read more
1.5.0 · Source§

fn le<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically less or equal to those of another. Read more
1.5.0 · Source§

fn gt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically greater than those of another. Read more
1.5.0 · Source§

fn ge<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically greater than or equal to those of another. Read more
1.82.0 · Source§

fn is_sorted(self) -> bool
where Self: Sized, Self::Item: PartialOrd,

Checks if the elements of this iterator are sorted. Read more
1.82.0 · Source§

fn is_sorted_by<F>(self, compare: F) -> bool
where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · Source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> K, K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction function. Read more
Source§

impl<'a, T> PartialEq<ListView<'a, T>> for Vec<T>
where T: ReadAt<'a> + PartialEq<<T as ReadAt<'a>>::ReadOutput>,

Source§

fn eq(&self, other: &ListView<'a, T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, T> PartialEq<Vec<T>> for ListView<'a, T>
where T: ReadAt<'a> + PartialEq<<T as ReadAt<'a>>::ReadOutput>,

Source§

fn eq(&self, other: &Vec<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, T> PartialEq for ListView<'a, T>
where T: ReadAt<'a>, <T as ReadAt<'a>>::ReadOutput: PartialEq,

Source§

fn eq(&self, other: &ListView<'a, T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, T> ReadAt<'a> for ListView<'a, T>
where T: ReadAt<'a>,

ReadAt for ListView itself — allows nested arrays (Vec<Vec<T>>).

Source§

const MODE: DataType = DataType::Offset

Whether the parent table stores this value inline or via a forward offset.
Source§

type ReadOutput = ListView<'a, T>

The type returned by read_at. For scalars this is Self; for strings it is &'a str; for arrays it is ListView<'a, T>.
Source§

fn read_at( buf: &'a [u8], offset: usize, ) -> <ListView<'a, T> as ReadAt<'a>>::ReadOutput

Decode a value from buf at absolute byte position offset.
Source§

fn default_output() -> ListView<'a, T>

Return the zero/empty default for this type’s ReadOutput. Read more
Source§

fn read_with_tag_at(buf: &'a [u8], offset: usize, _tag: u8) -> Self::ReadOutput

Source§

fn payload_block_end(_buf: &'a [u8], pos: usize) -> usize
where Self: Sized,

Returns the exclusive end address of the value whose payload starts at pos. Overridden by Table (→ view.block_end()), Struct (→ pos + size_of), and String (→ pos + 4 + length). Default returns pos (safe conservative fallback for scalars/unknown types).
Source§

impl<'a, T> Serialize for ListView<'a, T>
where T: ReadAt<'a>, <T as ReadAt<'a>>::ReadOutput: Serialize,

Serialize for ListView — enables zero-copy re-serialization of a view directly into a new buffer without materializing a Vec.

For inline element types, the source bytes are memcopied directly from the view’s backing buffer slice — no element-by-element dispatch. For offset types, the offset table must be rewritten because absolute positions change in the destination buffer; element values are re-serialized individually.

Source§

const SIZE: usize = 4

Source§

const MODE: DataType = DataType::Offset

Whether this value is written inline at the field position (Inline) or whether a 32-bit forward offset to the value is written instead (Offset). This constant is inspected by parent arrays and tables at compile time to choose the correct write strategy.
Source§

fn size_hint(&self) -> usize

Upper bound on the number of bytes this value and its alignment padding will consume. Used by write_to and parent tables to call ensure_capacity before entering the unchecked fast path.
Source§

fn write_to<B>(&self, buffer: &mut B) -> usize
where B: Buffer,

Write this value into buffer, calling ensure_capacity first. Returns the slot of the outermost written unit (length prefix for arrays, value start for scalars).
Source§

fn write_to_unchecked<B>(&self, buffer: &mut B) -> usize
where B: Buffer,

Write this value into buffer without checking capacity first. Read more
Source§

fn is_absent(&self) -> bool

Return true if this value is the default/zero/absent state. Read more
Source§

const ALIGN: usize = _

Source§

const ALIGNR: usize = _

Source§

const ALIGN_MASK: usize = _

Source§

fn tag(&self) -> u8

Auto Trait Implementations§

§

impl<'a, T> Freeze for ListView<'a, T>

§

impl<'a, T> RefUnwindSafe for ListView<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for ListView<'a, T>
where T: Send,

§

impl<'a, T> Sync for ListView<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for ListView<'a, T>
where T: Unpin,

§

impl<'a, T> UnsafeUnpin for ListView<'a, T>

§

impl<'a, T> UnwindSafe for ListView<'a, T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<I> IntoIterator for I
where I: Iterator,

Source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
Source§

type IntoIter = I

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.