pub struct CompleteGuess<'a, 'b, Set, Inv, Ser> {
pub idx: usize,
pub total: usize,
pub arg: Option<Cow<'b, OsStr>>,
pub name: Option<Cow<'b, str>>,
pub next: Option<Cow<'b, OsStr>>,
pub ctx: &'a mut Ctx<'b>,
pub set: &'a mut Set,
pub inv: &'a mut Inv,
pub ser: &'a mut Ser,
}Fields§
§idx: usize§total: usize§arg: Option<Cow<'b, OsStr>>§name: Option<Cow<'b, str>>§next: Option<Cow<'b, OsStr>>§ctx: &'a mut Ctx<'b>§set: &'a mut Set§inv: &'a mut Inv§ser: &'a mut SerImplementations§
Source§impl<'a, 'b, Set, Inv, Ser> CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser> CompleteGuess<'a, 'b, Set, Inv, Ser>
pub fn new( ctx: &'a mut Ctx<'b>, set: &'a mut Set, inv: &'a mut Inv, ser: &'a mut Ser, ) -> Self
pub fn set_ctx(&mut self, ctx: &'a mut Ctx<'b>) -> &mut Self
pub fn set_optset(&mut self, set: &'a mut Set) -> &mut Self
pub fn set_inv(&mut self, inv: &'a mut Inv) -> &mut Self
pub fn set_ser(&mut self, ser: &'a mut Ser) -> &mut Self
pub fn set_idx(&mut self, idx: usize) -> &mut Self
pub fn set_tot(&mut self, tot: usize) -> &mut Self
pub fn set_arg(&mut self, arg: Option<Cow<'b, OsStr>>) -> &mut Self
pub fn set_name(&mut self, name: Option<Cow<'b, str>>) -> &mut Self
pub fn set_next(&mut self, next: Option<Cow<'b, OsStr>>) -> &mut Self
pub fn with_ctx(self, ctx: &'a mut Ctx<'b>) -> Self
pub fn with_set(self, set: &'a mut Set) -> Self
pub fn with_inv(self, inv: &'a mut Inv) -> Self
pub fn with_ser(self, ser: &'a mut Ser) -> Self
pub fn with_idx(self, idx: usize) -> Self
pub fn with_tot(self, tot: usize) -> Self
pub fn with_arg(self, arg: Option<Cow<'b, OsStr>>) -> Self
pub fn with_name(self, name: Option<Cow<'b, str>>) -> Self
pub fn with_next(self, next: Option<Cow<'b, OsStr>>) -> Self
Source§impl<'a, 'c, 'b, Set, Inv, Ser> CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'c, 'b, Set, Inv, Ser> CompleteGuess<'a, 'b, Set, Inv, Ser>
pub fn guess_complete( &mut self, style: &UserStyle, ) -> Result<Option<SimpleMatRet>, Error>
Source§impl<'a, 'b, 'c, Set, Inv, Ser> CompleteGuess<'a, 'b, Set, Inv, Ser>where
Set: Set,
Inv: HandlerCollection<'c, Set, Ser>,
impl<'a, 'b, 'c, Set, Inv, Ser> CompleteGuess<'a, 'b, Set, Inv, Ser>where
Set: Set,
Inv: HandlerCollection<'c, Set, Ser>,
pub fn match<T>(&mut self, policy: &mut T, consume: bool) -> Result<bool, Error>where
T: PolicyConfig<'b> + MatchPolicy<Set = Set>,
pub fn apply<T>(&mut self, policy: &mut T, all: bool) -> Result<bool, Error>where
T: PolicyConfig<'b> + MatchPolicy<Set = Set>,
pub fn apply_multi<T>(
&mut self,
policy: &mut MultiOpt<T, Set>,
all: bool,
) -> Result<bool, Error>where
T: PolicyConfig<'b> + MatchPolicy<Set = Set>,
Trait Implementations§
Source§impl<'a, 'b, Set: Debug, Inv: Debug, Ser: Debug> Debug for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set: Debug, Inv: Debug, Ser: Debug> Debug for CompleteGuess<'a, 'b, Set, Inv, Ser>
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<ArgumentStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<ArgumentStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<BooleanStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<BooleanStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<CmdStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<CmdStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<CombinedOptionStyle, MultiOpt<T, Set>> for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<CombinedOptionStyle, MultiOpt<T, Set>> for CompleteGuess<'a, 'b, Set, Inv, Ser>
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<EmbeddedValuePlusStyle, MultiOpt<T, Set>> for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<EmbeddedValuePlusStyle, MultiOpt<T, Set>> for CompleteGuess<'a, 'b, Set, Inv, Ser>
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<EmbeddedValueStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<EmbeddedValueStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<EqualWithValuStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<EqualWithValuStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<FlagStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<FlagStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<MainStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<MainStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
Source§impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<PosStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
impl<'a, 'b, Set, Inv, Ser, T> GuessPolicy<PosStyle, T> for CompleteGuess<'a, 'b, Set, Inv, Ser>where
T: Default + PolicyBuild<'b>,
Auto Trait Implementations§
impl<'a, 'b, Set, Inv, Ser> Freeze for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser> RefUnwindSafe for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser> Send for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser> Sync for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser> Unpin for CompleteGuess<'a, 'b, Set, Inv, Ser>
impl<'a, 'b, Set, Inv, Ser> !UnwindSafe for CompleteGuess<'a, 'b, Set, Inv, Ser>
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<T> ConstructIntoOp for T
impl<T> ConstructIntoOp for T
Source§fn into_box(self) -> WrappedTy<BoxedCtor<T>>
fn into_box(self) -> WrappedTy<BoxedCtor<T>>
Return a type that wraps Ctor with Box.
§Example
let re = b'+'
.or(b'-')
.then(u8::is_ascii_hexdigit)
.then(u8::is_ascii_hexdigit.repeat_times::<3>())
.pat()
.map(|v: &[u8]| String::from_utf8(v.to_vec()).map_err(|_| Error::Uid(0)))
.into_box();
assert_eq!(BytesCtx::new(b"+AE00").ctor(&re)?, "+AE00");
assert!(BytesCtx::new(b"-GH66").ctor(&re).is_err());
assert_eq!(BytesCtx::new(b"-83FD").ctor(&re)?, "-83FD");
Ok(())Source§fn into_rc(self) -> WrappedTy<Rc<T>>
fn into_rc(self) -> WrappedTy<Rc<T>>
Return a type that wrap Ctor with Rc.
§Example
color_eyre::install()?;
let year = char::is_ascii_digit.repeat_times::<4>();
let num = char::is_ascii_digit.repeat_times::<2>();
let date = year.sep_once("-", num.sep_once("-", num)).into_rc();
let time = num.sep_once(":", num.sep_once(":", num));
let datetime = date.clone().sep_once(" ", time);
assert_eq!(
CharsCtx::new("2024-01-08").ctor(&date)?,
("2024", ("01", "08"))
);
assert_eq!(
CharsCtx::new("2024-01-08 10:01:13").ctor(&datetime)?,
(("2024", ("01", "08")), ("10", ("01", "13")))
);
Ok(())Source§fn into_dyn<'a, 'b, C, M, O, H, A>(
self,
) -> WrappedTy<DynamicBoxedCtor<'a, 'b, C, M, O, H, A>>
fn into_dyn<'a, 'b, C, M, O, H, A>( self, ) -> WrappedTy<DynamicBoxedCtor<'a, 'b, C, M, O, H, A>>
§Example 2
color_eyre::install()?;
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.into_dyn();
assert_eq!(BytesCtx::new(b"3,0").ctor(&re)?, (3, 0));
assert_eq!(BytesCtx::new(b"2,1").ctor(&re)?, (2, 1));
assert_eq!(BytesCtx::new(b"0,3").ctor(&re)?, (0, 3));
Ok(())fn into_arc(self) -> WrappedTy<Arc<T>>
fn into_cell(self) -> WrappedTy<Cell<T>>
fn into_refcell(self) -> WrappedTy<RefCell<T>>
fn into_mutex(self) -> WrappedTy<Mutex<T>>
fn into_dyn_sync<'a, 'b, C, M, O, H, A>( self, ) -> WrappedTy<DynamicBoxedCtorSync<'a, 'b, C, M, O, H, A>>
fn into_dyn_arc<'a, 'b, C, M, O, H, A>( self, ) -> WrappedTy<DynamicArcCtor<'a, 'b, C, M, O, H, A>>
fn into_dyn_rc<'a, 'b, C, M, O, H, A>( self, ) -> WrappedTy<DynamicRcCtor<'a, 'b, C, M, O, H, A>>
Source§impl<'a, C, T> DynamicCreateCtorThenHelper<'a, C> for T
impl<'a, C, T> DynamicCreateCtorThenHelper<'a, C> for T
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(())