Struct neure::ctx::RegexCtx

source ·
pub struct RegexCtx<'a, T>where
    T: ?Sized,{ /* private fields */ }

Implementations§

source§

impl<'a, T> RegexCtx<'a, T>where T: ?Sized,

source

pub fn new(dat: &'a T) -> Self

source

pub fn dat(&self) -> &'a T

source

pub fn offset(&self) -> usize

source

pub fn with_dat(self, dat: &'a T) -> Self

source

pub fn with_offset(self, offset: usize) -> Self

source

pub fn reset_with(&mut self, dat: &'a T) -> &mut Self

source

pub fn reset(&mut self) -> &mut Self

source

pub fn span_storer(&self, capacity: usize) -> SimpleStorer

source

pub fn with_policy<O>(self, before_policy: O) -> PolicyCtx<Self, O>where O: BPolicy<Self>,

source§

impl<'a, T> RegexCtx<'a, T>where T: ?Sized,

source

pub fn ignore<R>(self, regex: R) -> PolicyCtx<Self, RePolicy<Self, R>>

source§

impl<'a, T> RegexCtx<'a, T>where T: ?Sized, Self: Context<'a>,

source

pub fn ctor_with<H, A, P, M, O>( &mut self, pat: &P, handler: &mut H ) -> Result<O, Error>where P: Ctor<'a, Self, M, O>, H: Handler<A, Out = M, Error = Error>, A: Extract<'a, Self, Span, Out<'a> = A, Error = Error>,

source

pub fn map_with<H, A, P, O>(&mut self, pat: &P, handler: H) -> Result<O, Error>where P: Regex<Self, Ret = Span>, H: Handler<A, Out = O, Error = Error>, A: Extract<'a, Self, P::Ret, Out<'a> = A, Error = Error>,

source

pub fn ctor<P, O>(&mut self, pat: &P) -> Result<O, Error>where P: Ctor<'a, Self, &'a <Self as Context<'a>>::Orig, O>, &'a <Self as Context<'a>>::Orig: Extract<'a, Self, Span, Out<'a> = &'a <Self as Context<'a>>::Orig, Error = Error> + 'a,

source

pub fn map<P, O>( &mut self, pat: &P, mapper: impl MapSingle<&'a <Self as Context<'a>>::Orig, O> ) -> Result<O, Error>where P: Regex<Self, Ret = Span>, &'a <Self as Context<'a>>::Orig: Extract<'a, Self, P::Ret, Out<'a> = &'a <Self as Context<'a>>::Orig, Error = Error>,

source

pub fn ctor_span<P, O>(&mut self, pat: &P) -> Result<O, Error>where P: Ctor<'a, Self, Span, O>, Span: Extract<'a, Self, Span, Out<'a> = Span, Error = Error>,

source

pub fn map_span<P, O>( &mut self, pat: &P, mapper: impl MapSingle<Span, O> ) -> Result<O, Error>where P: Regex<Self, Ret = Span>, Span: Extract<'a, Self, P::Ret, Out<'a> = Span, Error = Error>,

Trait Implementations§

source§

impl<'a, T> Clone for RegexCtx<'a, T>where T: ?Sized,

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Context<'a> for RegexCtx<'a, [u8]>

§

type Orig = [u8]

§

type Item = u8

§

type Iter<'b> = BytesIndices<'b, u8> where Self: 'b

source§

fn len(&self) -> usize

source§

fn offset(&self) -> usize

source§

fn set_offset(&mut self, offset: usize) -> &mut Self

source§

fn inc(&mut self, offset: usize) -> &mut Self

source§

fn dec(&mut self, offset: usize) -> &mut Self

source§

fn orig_at(&self, offset: usize) -> Result<&'a Self::Orig, Error>

source§

fn peek_at(&self, offset: usize) -> Result<Self::Iter<'a>, Error>

source§

fn orig_sub(&self, offset: usize, len: usize) -> Result<&'a Self::Orig, Error>

source§

fn clone_with(&self, orig: &'a Self::Orig) -> Self

source§

fn is_empty(&self) -> bool

source§

fn peek(&self) -> Result<Self::Iter<'a>, Error>

source§

fn orig(&self) -> Result<&'a Self::Orig, Error>

source§

impl<'a> Context<'a> for RegexCtx<'a, str>

§

type Orig = str

§

type Item = char

§

type Iter<'b> = CharIndices<'b> where Self: 'b

source§

fn len(&self) -> usize

source§

fn offset(&self) -> usize

source§

fn set_offset(&mut self, offset: usize) -> &mut Self

source§

fn inc(&mut self, offset: usize) -> &mut Self

source§

fn dec(&mut self, offset: usize) -> &mut Self

source§

fn orig_at(&self, offset: usize) -> Result<&'a Self::Orig, Error>

source§

fn peek_at(&self, offset: usize) -> Result<Self::Iter<'a>, Error>

source§

fn orig_sub(&self, offset: usize, len: usize) -> Result<&'a Self::Orig, Error>

source§

fn clone_with(&self, orig: &'a Self::Orig) -> Self

source§

fn is_empty(&self) -> bool

source§

fn peek(&self) -> Result<Self::Iter<'a>, Error>

source§

fn orig(&self) -> Result<&'a Self::Orig, Error>

source§

impl<'a, T> Debug for RegexCtx<'a, T>where T: ?Sized + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, T, R> Extract<'a, RegexCtx<'a, T>, R> for RegexCtx<'a, T>where T: ?Sized, Self: Context<'a>,

§

type Out<'b> = RegexCtx<'a, T>

§

type Error = Error

source§

fn extract(ctx: &Self, _: &R) -> Result<Self::Out<'a>, Self::Error>

source§

impl<'a, T> Match<RegexCtx<'a, T>> for RegexCtx<'a, T>where T: ?Sized, Self: Context<'a>,

source§

fn try_mat_t<Pat: Regex<RegexCtx<'a, T>> + ?Sized>( &mut self, pat: &Pat ) -> Result<Pat::Ret, Error>

source§

fn is_mat<Pat: Regex<C> + ?Sized>(&mut self, pat: &Pat) -> bool

source§

fn try_mat<Pat: Regex<C, Ret = Span> + ?Sized>( &mut self, pat: &Pat ) -> Result<Pat::Ret, Error>

source§

impl<'a, T, B> PolicyMatch<RegexCtx<'a, T>, B> for RegexCtx<'a, T>where T: ?Sized, Self: Context<'a>, B: BPolicy<RegexCtx<'a, T>>,

source§

fn try_mat_policy<Pat>( &mut self, pat: &Pat, b_policy: &B ) -> Result<Pat::Ret, Error>where Pat: Regex<RegexCtx<'a, T>> + ?Sized,

source§

impl<'a, T> Copy for RegexCtx<'a, T>where T: ?Sized,

Auto Trait Implementations§

§

impl<'a, T: ?Sized> RefUnwindSafe for RegexCtx<'a, T>where T: RefUnwindSafe,

§

impl<'a, T: ?Sized> Send for RegexCtx<'a, T>where T: Sync,

§

impl<'a, T: ?Sized> Sync for RegexCtx<'a, T>where T: Sync,

§

impl<'a, T: ?Sized> Unpin for RegexCtx<'a, T>

§

impl<'a, T: ?Sized> UnwindSafe for RegexCtx<'a, T>where T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

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>,

source§

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(())
source§

impl<'a, C, T> DynamicCreateRegexThenHelper<'a, C> for Twhere C: Context<'a> + Match<C>,

source§

fn dyn_then_re<F>(self, func: F) -> DynamicCreateRegexThen<C, T, F>

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> MayDebug for T