Struct neure::ctx::PolicyCtx

source ·
pub struct PolicyCtx<I, B> { /* private fields */ }

Implementations§

source§

impl<I, B> PolicyCtx<I, B>

source

pub fn new(inner: I, before_policy: B) -> Self

source

pub fn with_policy<O>(self, before_policy: O) -> PolicyCtx<I, O>

source

pub fn inner(&self) -> &I

source

pub fn inner_mut(&mut self) -> &mut I

source

pub fn set_inner(&mut self, dat: I) -> &mut Self

source

pub fn with_inner(self, dat: I) -> Self

source

pub fn reset_with(&mut self, dat: I) -> &mut Self

source

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

source§

impl<'a, I, B> PolicyCtx<I, B>where I: Context<'a>, Self: Context<'a>, B: BPolicy<I> + '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>, <Self as Context<'a>>::Orig: 'a, &'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<I, B> Clone for PolicyCtx<I, B>where I: Clone, B: Clone,

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, I, B> Context<'a> for PolicyCtx<I, B>where B: Clone + 'a, I: Context<'a>,

§

type Orig = <I as Context<'a>>::Orig

§

type Item = <I as Context<'a>>::Item

§

type Iter<'b> = <I as Context<'a>>::Iter<'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<I: Debug, B: Debug> Debug for PolicyCtx<I, B>

source§

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

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

impl<'a, I, R, B> Extract<'a, PolicyCtx<I, B>, R> for PolicyCtx<I, B>where B: Clone, Self: Context<'a>, I: Context<'a> + Clone,

§

type Out<'b> = PolicyCtx<I, B>

§

type Error = Error

source§

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

source§

impl<'a, I, B> Match<PolicyCtx<I, B>> for PolicyCtx<I, B>where B: BPolicy<I>, I: Context<'a>, Self: Context<'a>,

source§

fn try_mat_t<Pat: Regex<PolicyCtx<I, B>> + ?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, I, B> PolicyMatch<PolicyCtx<I, B>, B> for PolicyCtx<I, B>where B: BPolicy<I>, I: Context<'a>, Self: Context<'a>,

source§

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

source§

impl<I, B> Copy for PolicyCtx<I, B>where B: Copy, I: Copy,

Auto Trait Implementations§

§

impl<I, B> RefUnwindSafe for PolicyCtx<I, B>where B: RefUnwindSafe, I: RefUnwindSafe,

§

impl<I, B> Send for PolicyCtx<I, B>where B: Send, I: Send,

§

impl<I, B> Sync for PolicyCtx<I, B>where B: Sync, I: Sync,

§

impl<I, B> Unpin for PolicyCtx<I, B>where B: Unpin, I: Unpin,

§

impl<I, B> UnwindSafe for PolicyCtx<I, B>where B: UnwindSafe, I: UnwindSafe,

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