Skip to main content

Ask

Struct Ask 

Source
pub struct Ask<R, W> { /* private fields */ }
Expand description

The default: shows the warning and waits for the word yes.

The streams are whatever the caller hands over, which in the binary means stdin and stderr rather than the controlling terminal. Two consequences worth knowing rather than discovering: git-xcrypt lock < answers.txt proceeds if the first line is yes, and git-xcrypt lock 2>/dev/null waits on a prompt nobody can see. Opening /dev/tty instead would fix both on Unix and has no portable equivalent, and this binary ships on Windows too.

Implementations§

Source§

impl<R: BufRead, W: Write> Ask<R, W>

Source

pub const fn new(input: R, output: W) -> Self

Asks on output and reads the answer from input.

Trait Implementations§

Source§

impl<R: BufRead, W: Write> Confirm for Ask<R, W>

Source§

fn confirm(&mut self, warning: &Warning) -> Result<bool>

Accepts the exact word yes and nothing else.

Not y, not YES: the founding document asks for a word typed in full because the point of the prompt is to interrupt a reflex. End of input — a run with no terminal behind it, lock < /dev/null in a script — reads as a refusal, which is the direction that changes nothing.

Source§

impl<R: Debug, W: Debug> Debug for Ask<R, W>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<R, W> Freeze for Ask<R, W>
where R: Freeze, W: Freeze,

§

impl<R, W> RefUnwindSafe for Ask<R, W>

§

impl<R, W> Send for Ask<R, W>
where R: Send, W: Send,

§

impl<R, W> Sync for Ask<R, W>
where R: Sync, W: Sync,

§

impl<R, W> Unpin for Ask<R, W>
where R: Unpin, W: Unpin,

§

impl<R, W> UnsafeUnpin for Ask<R, W>
where R: UnsafeUnpin, W: UnsafeUnpin,

§

impl<R, W> UnwindSafe for Ask<R, W>
where R: UnwindSafe, W: 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

type Output = T

Should always be Self
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.