Skip to content

JumperBot/split-every

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

split-every

crates.io version github.com forks github.com stars crates.io downloads


use split_every::prelude::*;

// This prints: [(0, 0), (0, 1)]
//              [(0, 0)]
//              [(0, 1), (0, 0)]
//              [(0, 1)]
let mut splitter: SplitEvery<&[(u8, u8)], &[(u8, u8)]> = [
    (0, 0), (0, 1), (0, 0),
    (0, 0), (0, 0), (0, 1),
    (0, 0), (0, 0), (0, 1),
].split_every_n_times(&[(0, 0)], 2);
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());

// This prints: "Oh hi there"
//              "I don't really"
//              "know what to"
//              "say".
let mut splitter: SplitEvery<&str, &str> =
    "Oh hi there I don't really know what to say".split_every_n_times(" ", 3);
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());

// This prints: ["This", "is", "you", "This"]
//              ["me", "This", "is", "someone", "This"]
//              ["them"]
let mut iter = [
    ["This", "is", "you"],
    ["This", "is", "me"],
    ["This", "is", "someone"],
    ["This", "is", "them"],
].iter().flatten().map(|val| *val);
let mut splitter: SplitEvery<Box<dyn FnMut() -> Option<&'static str>>, &str> =
    SplitEvery::n_times_from_fn(Box::new(move || iter.next()), "is", 2);
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());
println!("{:?}", splitter.next().unwrap());

✨ Split For Every N Occurrences Of A Pattern Iteratively

This crate helps you split data for every n occurrences of a pattern.
It contains an exclusive iterator.


📄 Licensing

split-every is licensed under the MIT LICENSE; This is the summarization.