Struct xfind::StreamFinder [−][src]
pub struct StreamFinder<'n> { /* fields omitted */ }
Expand description
A substring searcher for stream searches.
Implementations
Creates a new StreamFinder
for the given needle.
Examples
use xfind::StreamFinder; let finder = StreamFinder::new(b"rust");
Returns the needle that this finder searches for.
Examples
use xfind::StreamFinder; let finder = StreamFinder::new(b"rust"); assert_eq!(finder.needle(), b"rust");
Returns the index of the first occurrence of the given needle in the stream.
Examples
use std::io::{self, Cursor}; use xfind::StreamFinder; fn main() -> io::Result<()> { let mut stream = Cursor::new(b"rusty rust"); let finder = StreamFinder::new(b"rust"); let pos = finder.find(&mut stream).transpose()?; assert_eq!(pos, Some(0)); Ok(()) }
Returns the index of the last occurrence of the given needle in the stream.
Panics
Panics if the length of the stream is greater than usize::MAX
.
Examples
use std::io::{self, Cursor}; use xfind::StreamFinder; fn main() -> io::Result<()> { let mut stream = Cursor::new(b"rusty rust"); let finder = StreamFinder::new(b"rust"); let pos = finder.rfind(&mut stream).transpose()?; assert_eq!(pos, Some(6)); Ok(()) }
Returns an iterator over all occurrences of the given needle in the stream.
Examples
use std::io::{self, Cursor}; use xfind::StreamFinder; fn main() -> io::Result<()> { let mut stream = Cursor::new(b"rusty rust"); let finder = StreamFinder::new(b"rust"); let mut iter = finder.find_iter(&mut stream); assert_eq!(iter.next().transpose()?, Some(0)); assert_eq!(iter.next().transpose()?, Some(6)); assert_eq!(iter.next().transpose()?, None); Ok(()) }
pub fn rfind_iter<'s, R: Read + Seek>(
&'n self,
rdr: &'s mut R
) -> Result<FindRevIter<'n, 's, R>>
pub fn rfind_iter<'s, R: Read + Seek>(
&'n self,
rdr: &'s mut R
) -> Result<FindRevIter<'n, 's, R>>
Returns a reverse iterator over all occurrences of the given needle in the stream.
Errors
Returns an I/O error if seeking to the end of the stream failed.
Panics
Panics if the length of the stream is greater than usize::MAX
.
Examples
use std::io::{self, Cursor}; use xfind::StreamFinder; fn main() -> io::Result<()> { let mut stream = Cursor::new(b"rusty rust"); let finder = StreamFinder::new(b"rust"); let mut iter = finder.rfind_iter(&mut stream)?; assert_eq!(iter.next().transpose()?, Some(6)); assert_eq!(iter.next().transpose()?, Some(0)); assert_eq!(iter.next().transpose()?, None); Ok(()) }
Trait Implementations
Auto Trait Implementations
impl<'n> RefUnwindSafe for StreamFinder<'n>
impl<'n> Send for StreamFinder<'n>
impl<'n> Sync for StreamFinder<'n>
impl<'n> Unpin for StreamFinder<'n>
impl<'n> UnwindSafe for StreamFinder<'n>
Blanket Implementations
Mutably borrows from an owned value. Read more