[][src]Struct query_range::QueryRangeItr

pub struct QueryRangeItr<'a> { /* fields omitted */ }

Iterates all found query within given content.

Examples

Iteration:

use query_range::QueryRangeItr;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let mut occurrences = QueryRangeItr::new(query, content);
while let Some(next) = occurrences.next() {
    println!("{}", &content[next]);
}

Collecting to an Array:

use query_range::QueryRangeItr;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let mut occurrences = QueryRangeItr::new(query, content);
let needles: Vec<String> = occurrences.map(|range| String::from(&content[range])).collect();

Collecting to Strings:

use query_range::QueryRangeItr;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let mut occurrences = QueryRangeItr::new(query, content);
let needles: Vec<String> = occurrences.collect_strings();

Transforming the query:

use query_range::QueryRangeItr;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let result = QueryRangeItr::transform_query(query, content, |it| it.to_uppercase());

Reassembling the content:

use query_range::QueryRangeItr;
use query_range::utility::to_title_case;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let result = QueryRangeItr::transform_all(
    query,
    content,
    |it| it.to_uppercase(), // query transform
    |it| to_title_case(it), // non-query transform
);

Implementations

impl<'a> QueryRangeItr<'a>[src]

Basic implementation

pub fn new(query: &'a str, content: &'a str) -> QueryRangeItr<'a>

Notable traits for QueryRangeItr<'a>

impl<'a> Iterator for QueryRangeItr<'a> type Item = Range<usize>;
[src]

Creates a new iterator with given content or query which will iterate each found instance of the query.

pub fn new_inverted(query: &'a str, content: &'a str) -> QueryRangeItr<'a>

Notable traits for QueryRangeItr<'a>

impl<'a> Iterator for QueryRangeItr<'a> type Item = Range<usize>;
[src]

Creates a new iterator with given content or query which will iterate the content in between each found instance of the query.

pub fn collect_strings(&mut self) -> Vec<String>[src]

Collects all iterated ranges and builds an array of strings from the original content at those ranges

impl<'a> QueryRangeItr<'a>[src]

Transform methods

pub fn transform<T>(
    query: &'a str,
    content: &'a str,
    transform: T,
    invert: bool
) -> String where
    T: Fn(&str) -> String
[src]

Reassembles content, but transforms the query content or the non-query content

Example:

use query_range::QueryRangeItr;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let result = QueryRangeItr::transform(query, content, |it| it.to_uppercase(), false);
assert_eq!(result, "haystackNEEDLEhaystackNEEDLEhaystack");

Parameters:

  • query - The search query
  • content - The content to look for the query in
  • transform - A transform closure to run on all query content
  • invert - If true, applies the transform to the non-query content

pub fn transform_query<T>(
    query: &'a str,
    content: &'a str,
    transform: T
) -> String where
    T: Fn(&str) -> String
[src]

Reassembles content, but transforms the query content

Example:

use query_range::QueryRangeItr;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let result = QueryRangeItr::transform_query(query, content, |it| it.to_uppercase());
assert_eq!(result, "haystackNEEDLEhaystackNEEDLEhaystack");

Parameters:

  • query - The search query
  • content - The content to look for the query in
  • transform - A transform closure to run on all query content

pub fn transform_other<T>(
    query: &'a str,
    content: &'a str,
    transform: T
) -> String where
    T: Fn(&str) -> String
[src]

Reassembles content, but transforms the non-query content

Example:

use query_range::QueryRangeItr;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let result = QueryRangeItr::transform_other(query, content, |it| it.to_uppercase());
assert_eq!(result, "HAYSTACKneedleHAYSTACKneedleHAYSTACK");

Parameters:

  • query - The search query
  • content - The content to look for the query in
  • transform - A transform closure to run on all non-query content

pub fn transform_all<TQ, TNQ>(
    query: &'a str,
    content: &'a str,
    transform_query: TQ,
    transform_non_query: TNQ
) -> String where
    TQ: Fn(&str) -> String,
    TNQ: Fn(&str) -> String
[src]

Reassembles content, but transforms both the query content and the non-query content

Example:

use query_range::QueryRangeItr;
use query_range::utility::to_title_case;

let query = "needle";
let content = "haystackneedlehaystackneedlehaystack";
let result = QueryRangeItr::transform_all(
    query,
    content,
    |it| it.to_uppercase(),
    |it| to_title_case(it),
);
assert_eq!(result, "HaystackNEEDLEHaystackNEEDLEHaystack");

Parameters:

  • query - The search query
  • content - The content to look for the query in
  • transform_query - A transform closure to run on all query content
  • transform_non_query - If true, applies the transform to the non-query content

Trait Implementations

impl<'a> Iterator for QueryRangeItr<'a>[src]

type Item = Range<usize>

The type of the elements being iterated over.

fn next(&mut self) -> Option<Self::Item>[src]

Gets next range of the query in the content.

Auto Trait Implementations

impl<'a> RefUnwindSafe for QueryRangeItr<'a>

impl<'a> Send for QueryRangeItr<'a>

impl<'a> Sync for QueryRangeItr<'a>

impl<'a> Unpin for QueryRangeItr<'a>

impl<'a> UnwindSafe for QueryRangeItr<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.