Skip to main content

ValueChoice

Struct ValueChoice 

Source
pub struct ValueChoice<T> { /* private fields */ }
Expand description

A Choice question over values known only at runtime, such as line or record ids.

Each value is sent as its Display text and parsed back with FromStr, so the two must round-trip. Options carry no descriptions; put what they refer to in the state.

use typesafe_client::{Questions, ValueChoice};

let lines = ["Refunds take 5 days.", "Contact support by email.", "Cancel anytime."];
let document: String = lines
    .iter()
    .enumerate()
    .map(|(i, line)| format!("{i}| {line}\n"))
    .collect();

let mut questions = Questions::new();
let line = questions.add(
    "line",
    ValueChoice::new("Which line says how long refunds take?", 0..lines.len()),
);
// `response.answer(&line)?` returns a `TypedChoice<usize>`.

Implementations§

Source§

impl<T: Display> ValueChoice<T>

Source

pub fn new<I>(instructions: impl Into<Content>, values: I) -> Self
where I: IntoIterator<Item = T>,

A Choice over values, asking instructions.

Trait Implementations§

Source§

impl<T: Clone> Clone for ValueChoice<T>

Source§

fn clone(&self) -> ValueChoice<T>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for ValueChoice<T>

Source§

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

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

impl<T> IntoQuestion for ValueChoice<T>
where T: FromStr + Clone + PartialEq,

Source§

type Answer = ValueChoice<T>

How the answer is read; the type parameter of the returned QuestionKey.
Source§

fn into_question(self) -> Question

The question as sent on the wire.
Source§

impl<T: PartialEq> PartialEq for ValueChoice<T>

Source§

fn eq(&self, other: &ValueChoice<T>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<T> ReadAnswer for ValueChoice<T>
where T: FromStr + Clone + PartialEq,

Source§

type Output<'a> = TypedChoice<T>

What SystemOneResponse::answer returns for this key.
Source§

fn read(id: &str, answer: &Answer) -> Result<TypedChoice<T>, AnswerError>

Reads the answer to question id, failing when it has the wrong kind or content.
Source§

impl<T: PartialEq> StructuralPartialEq for ValueChoice<T>

Auto Trait Implementations§

§

impl<T> Freeze for ValueChoice<T>
where PhantomData<fn() -> T>: Freeze,

§

impl<T> RefUnwindSafe for ValueChoice<T>
where PhantomData<fn() -> T>: RefUnwindSafe,

§

impl<T> Send for ValueChoice<T>
where PhantomData<fn() -> T>: Send,

§

impl<T> Sync for ValueChoice<T>
where PhantomData<fn() -> T>: Sync,

§

impl<T> Unpin for ValueChoice<T>
where PhantomData<fn() -> T>: Unpin,

§

impl<T> UnsafeUnpin for ValueChoice<T>
where PhantomData<fn() -> T>: UnsafeUnpin,

§

impl<T> UnwindSafe for ValueChoice<T>
where PhantomData<fn() -> T>: UnwindSafe,

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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