Skip to main content

ValAccessor

Struct ValAccessor 

Source
pub struct ValAccessor { /* private fields */ }
Expand description

ValAccessor manage the option value and raw value.

§Example

let ctx = Ctx::default().with_inner_ctx(InnerCtx::default());
{
    let mut value = ValAccessor::fallback::<i32>();
    let raw_value = OsStr::new("123");

    value.initialize()?;
    value.set(vec![1, 4]);
    value.store_all(Some(&raw_value), &ctx, &Action::App)?;
    assert_eq!(value.pop::<i32>(), Some(123));
    assert_eq!(value.rawval()?, &raw_value);
}
{
    let mut value =
        ValAccessor::new(ValStorer::fallback::<i32>(), ValInitializer::new_values(vec![7]));
    let raw_value = OsStr::new("42");

    value.initialize()?;
    value.store_all(Some(&raw_value), &ctx, &Action::Set)?;
    assert_eq!(value.pop::<i32>(), Some(42));
    assert_eq!(value.rawval()?, &raw_value);
}
{
    let validator = ValValidator::range_from(-32i32);
    let mut value = ValAccessor::new_validator(validator, ValInitializer::fallback());
    let raw_value1 = OsStr::new("8");

    value.initialize()?;
    value.set(vec![1, 4]);
    assert_eq!(
        value.store_all(Some(&raw_value1), &ctx, &Action::App)?,
        true
    );
    assert_eq!(value.pop::<i32>(), Some(8));
    assert_eq!(value.rawval()?, &raw_value1);

    let raw_value2 = OsStr::new("-66");

    assert!(value.store_all(Some(&raw_value2), &ctx, &Action::App).is_err());
    assert_eq!(value.pop::<i32>(), Some(4));
    assert_eq!(value.rawval()?, &raw_value1);
}
{
    let validator = ValValidator::range_to(-42);
    let mut value =
        ValAccessor::new_validator(validator, ValInitializer::new_values(vec![-88, 1]));
    let raw_value1 = OsStr::new("-68");

    value.initialize()?;
    assert_eq!(
        value.store_all(Some(&raw_value1), &ctx, &Action::Set)?,
        true
    );
    assert_eq!(value.pop::<i32>(), Some(-68));
    assert_eq!(value.rawval()?, &raw_value1);

    let raw_value2 = OsStr::new("-20");

    assert!(value.store_all(Some(&raw_value2), &ctx, &Action::App).is_err());
    assert_eq!(value.pop::<i32>(), None);
    assert_eq!(value.rawval()?, &raw_value1);
}

Implementations§

Source§

impl ValAccessor

Source

pub fn new(storer: ValStorer, initializer: ValInitializer) -> Self

Source

pub fn new_validator<U: ErasedTy + RawValParser>( validator: ValValidator<U>, initializer: ValInitializer, ) -> Self

Source

pub fn fallback<U: ErasedTy + RawValParser>() -> Self

Source

pub fn with_storer(self, storer: ValStorer) -> Self

Source

pub fn with_initializer(self, initializer: ValInitializer) -> Self

Source

pub fn set_storer(&mut self, storer: ValStorer) -> &mut Self

Source

pub fn set_initializer(&mut self, initializer: ValInitializer) -> &mut Self

Source

pub fn storer(&self) -> &ValStorer

Source

pub fn initializer(&self) -> &ValInitializer

Source

pub fn storer_mut(&mut self) -> &mut ValStorer

Source

pub fn initializer_mut(&mut self) -> &mut ValInitializer

Source

pub fn handlers(&mut self) -> (&mut Vec<OsString>, &mut AnyValue)

Source

pub fn store_all( &mut self, arg: Option<&OsStr>, ctx: &Ctx<'_>, act: &Action, ) -> Result<bool, Error>

Parsing the raw value into typed value, save the raw value and result. The function will map the failure error to Ok(false).

Methods from Deref<Target = AnyValue>§

Source

pub fn clear(&mut self)

Source

pub fn contain_type<T: ErasedTy>(&self) -> bool

Source

pub fn pop<T: ErasedTy>(&mut self) -> Option<T>

Source

pub fn entry<T: ErasedTy>(&mut self) -> Entry<'_, Vec<T>>

Source

pub fn push<T: ErasedTy>(&mut self, val: T) -> &mut Self

Push a value to the values of type T.

Source

pub fn set<T: ErasedTy>(&mut self, vals: Vec<T>) -> Option<Vec<T>>

Set the values of type T.

Source

pub fn remove<T: ErasedTy>(&mut self) -> Option<Vec<T>>

Remove the values of type T.

Source

pub fn val<T: ErasedTy>(&self) -> Result<&T, Error>

Get the last value reference of type T.

Source

pub fn val_mut<T: ErasedTy>(&mut self) -> Result<&mut T, Error>

Get the last value mutable reference of type T.

Source

pub fn vals<T: ErasedTy>(&self) -> Result<&Vec<T>, Error>

Get the values of type T.

Source

pub fn vals_mut<T: ErasedTy>(&mut self) -> Result<&mut Vec<T>, Error>

Get the values of type T.

Trait Implementations§

Source§

impl Debug for ValAccessor

Source§

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

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

impl Default for ValAccessor

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Deref for ValAccessor

Source§

type Target = AnyValue

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for ValAccessor

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl ErasedValue for ValAccessor

Source§

fn initialize(&mut self) -> Result<(), Error>

Source§

fn store( &mut self, arg: Option<&OsStr>, ctx: &Ctx<'_>, act: &Action, ) -> Result<(), Error>

Source§

fn store_act<U: ErasedTy>( &mut self, val: U, _: &Ctx<'_>, act: &Action, ) -> Result<(), Error>

Source§

fn val<U: ErasedTy>(&self) -> Result<&U, Error>

Source§

fn val_mut<U: ErasedTy>(&mut self) -> Result<&mut U, Error>

Source§

fn vals<U: ErasedTy>(&self) -> Result<&Vec<U>, Error>

Source§

fn vals_mut<U: ErasedTy>(&mut self) -> Result<&mut Vec<U>, Error>

Source§

fn take_val<U: ErasedTy>(&mut self) -> Result<U, Error>

Source§

fn take_vals<U: ErasedTy>(&mut self) -> Result<Vec<U>, Error>

Source§

fn rawval(&self) -> Result<&OsString, Error>

Source§

fn rawval_mut(&mut self) -> Result<&mut OsString, Error>

Source§

fn rawvals(&self) -> Result<&Vec<OsString>, Error>

Source§

fn rawvals_mut(&mut self) -> Result<&mut Vec<OsString>, Error>

Source§

fn take_rawval<U: ErasedTy>(&mut self) -> Result<OsString, Error>

Source§

fn take_rawvals<U: ErasedTy>(&mut self) -> Result<Vec<OsString>, Error>

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<'a, C, T> DynamicCtorThenBuilderHelper<'a, C> for T
where C: Match<'a>,

Source§

fn into_ctor_then_builder<F, O1, R>( self, func: F, ) -> DynamicCtorThenBuilder<C, T, F>
where F: Fn(&mut C, &O1) -> Result<R, Error>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedTy for T
where T: Any + Debug + Sync + Send + 'static,

Source§

impl<T> MayDebug for T