```rust use splitter::StrSplitter;
let sp = StrSplitter::new("bytes example", " ");
assert_eq!(
sp.collect::
```rust use splitter::Splitter;
let sp = Splitter::new(&[1, 2, 3, 3, 4], [[2], [4]]);
let re: Vec<&[usize]> = vec![&[1], &[2], &[3, 3], &[4]];
assert_eq!(sp.collect::
```rust use std::ops::Range; use splitter::{StrInfo, StrSplitter};
struct CustomCtx { cursor: usize, }
struct Custom<'a> {
content: &'a str,
span: Range
impl<'a> StrInfo<'a> for Custom<'a> { type Context = CustomCtx; fn generate(ctx: &mut Self::Context, ts: &'a str) -> Self { let start = ctx.cursor; ctx.cursor += ts.len(); Custom { content: ts, span: start..ctx.cursor } } }
let sp = StrSplitter::new("bytes example", " ").withinfo::
derive
and impls
- feature)```rust use std::ops::Range; use splitter::{StrInfo, StrSplitter};
struct Custom<'a> {
content: &'a str,
span: Range
let sp = StrSplitter::new("bytes example", " ").withinfo::
When using the derive macro, and lifetimes are provided, the first lifetime has to be the lifetime of the slice or of the string.
Same with generic type parameters, the first generic type parameter has to be the the type of the slice elements.
std
- enables the standard library (currently only used with impls
- feature)impls
- automatically implements Info
and StrInfo
for usefull types from core
or std
infos
- adds pre-defined usefull Info
and StrInfo
typesderive
- enables the Info
and StrInfo
derive macrofull
- enables all featuresimpls
- featurecore::pin::Pin
core::marker::PhantomData
core::marker::PhantomPinned
core::mem::ManuallyDrop
core::cell::Cell
core::cell::RefCell
core::cell::UnsafeCell
core::ops::Range
core::ops::RangeInclusive
impls
and std
- featurestd::boxed::Box
std::rc::Rc
std::sync::Arc
std::sync::Mutex
std::sync::RwLock
std::vec::Vec
(only for slices)std::path::PathBuf
(only for strings)std::string::String
(only for strings)