pub struct VectoredSubset<'string, 'slice> {
pub range: Range,
/* private fields */
}
vectored
only.Expand description
A “ragged” subset of VectoredByteSlices
.
This struct is able to reference a contiguous subset of the vectored
string data contained in a VectoredByteSlices
, including any
“ragged” start or end component which does not span the entirety of the
corresponding slice from the input data. This allows the match callback
provided to
scan_sync_vectored()
to
receive VectoredMatch
instances that reference the input data without introducing
any additional dynamic allocations.
Fields§
§range: Range
The offsets for the entire match, without reference to the data slices.
Implementations§
Source§impl<'string, 'slice> VectoredSubset<'string, 'slice>
impl<'string, 'slice> VectoredSubset<'string, 'slice>
Sourcepub fn iter_slices(
&self,
) -> impl ExactSizeIterator<Item = ByteSlice<'string>> + DoubleEndedIterator + '_
pub fn iter_slices( &self, ) -> impl ExactSizeIterator<Item = ByteSlice<'string>> + DoubleEndedIterator + '_
Iterate over the referenced data.
use vectorscan::sources::VectoredByteSlices;
let b1 = "asdf";
let b2 = "ok";
let b3 = "bsdf";
let bb = [b1.into(), b2.into(), b3.into()];
let bs = VectoredByteSlices::from_slices(&bb);
let sub = bs.index_range(2..8).unwrap();
let collected: Vec<&str> = sub.iter_slices().map(|s| unsafe { s.as_str() }).collect();
assert_eq!(&collected, &["df", "ok", "bs"]);
This iterator is the only interface exposed to access the data because
“ragged” start and end components cannot be expressed as simple
subslices of the vectored data in a VectoredByteSlices
, so the first
and/or last iteration result must come from additional references to
ragged substrings which are also stored in this struct.
Trait Implementations§
Source§impl<'string, 'slice> Clone for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Clone for VectoredSubset<'string, 'slice>
Source§fn clone(&self) -> VectoredSubset<'string, 'slice>
fn clone(&self) -> VectoredSubset<'string, 'slice>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'string, 'slice> Debug for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Debug for VectoredSubset<'string, 'slice>
Source§impl<'string, 'slice> Hash for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Hash for VectoredSubset<'string, 'slice>
Source§impl<'string, 'slice> Ord for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Ord for VectoredSubset<'string, 'slice>
Source§fn cmp(&self, other: &VectoredSubset<'string, 'slice>) -> Ordering
fn cmp(&self, other: &VectoredSubset<'string, 'slice>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<'string, 'slice> PartialEq for VectoredSubset<'string, 'slice>
impl<'string, 'slice> PartialEq for VectoredSubset<'string, 'slice>
Source§fn eq(&self, other: &VectoredSubset<'string, 'slice>) -> bool
fn eq(&self, other: &VectoredSubset<'string, 'slice>) -> bool
self
and other
values to be equal, and is used by ==
.Source§impl<'string, 'slice> PartialOrd for VectoredSubset<'string, 'slice>
impl<'string, 'slice> PartialOrd for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Copy for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Eq for VectoredSubset<'string, 'slice>
impl<'string, 'slice> StructuralPartialEq for VectoredSubset<'string, 'slice>
Auto Trait Implementations§
impl<'string, 'slice> Freeze for VectoredSubset<'string, 'slice>
impl<'string, 'slice> RefUnwindSafe for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Send for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Sync for VectoredSubset<'string, 'slice>
impl<'string, 'slice> Unpin for VectoredSubset<'string, 'slice>
impl<'string, 'slice> UnwindSafe for VectoredSubset<'string, 'slice>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.