pub struct Digit(/* private fields */);Implementations§
Trait Implementations§
impl Copy for Digit
Auto Trait Implementations§
impl RefUnwindSafe for Digit
impl Send for Digit
impl Sync for Digit
impl Unpin for Digit
impl UnwindSafe for Digit
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
Mutably borrows from an owned value. Read more
source§impl<'a, C, T> DynamicCreateCtorThenHelper<'a, C> for Twhere
C: Context<'a> + Match<C>,
impl<'a, C, T> DynamicCreateCtorThenHelper<'a, C> for Twhere C: Context<'a> + Match<C>,
source§fn dyn_then_ctor<F>(self, func: F) -> DynamicCreateCtorThen<C, T, F>
fn dyn_then_ctor<F>(self, func: F) -> DynamicCreateCtorThen<C, T, F>
Construct a new regex with Ctor implementation based on previous result.
Example
let num = u8::is_ascii_digit
.repeat_one()
.map(|v: &[u8]| String::from_utf8(v.to_vec()).map_err(|_| Error::Uid(0)))
.map(map::from_str::<usize>());
let num = num.clone().sep_once(b",", num);
let re = num.dyn_then_ctor(|a: &(usize, usize)| {
// leave the a's type empty cause rustc reject compile
Ok(b'+'
.repeat_range(a.0..a.0 + 1)
.then(b'-'.repeat_range(a.1..a.1 + 1)))
});
assert_eq!(
BytesCtx::new(b"3,0+++").ctor(&re)?,
((3, 0), ([43, 43, 43].as_slice(), [].as_slice()))
);
assert_eq!(
BytesCtx::new(b"2,1++-").ctor(&re)?,
((2, 1), ([43, 43].as_slice(), [45].as_slice()))
);
assert_eq!(
BytesCtx::new(b"0,3---").ctor(&re)?,
((0, 3), ([].as_slice(), [45, 45, 45].as_slice()))
);
Ok(())