diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2019-07-14 18:10:32 -0700 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2019-08-13 19:30:15 -0700 |
commit | e6e8a024bf892851cf65ebea4c214d5bc1c90594 (patch) | |
tree | 446313fa103328b442b6432d705763b1ca4f332e /nitrocli/src/error.rs | |
parent | ec9dddc17d7466ec44fbfd08e71546b8c0ba9b1b (diff) | |
download | nitrocli-e6e8a024bf892851cf65ebea4c214d5bc1c90594.tar.gz nitrocli-e6e8a024bf892851cf65ebea4c214d5bc1c90594.tar.bz2 |
Introduce TryInto<T> trait
This change introduces a new trait, TryInto, to the crate. In the future
this trait will allow us to keep a flexible set of error result types
from the various try_with_* functions, which use a certain nitrokey
error variant to check for the entry of a wrong secret.
Note that while a TryInto trait exists in Rust's standard library, that
was not found to be helpful because we have no way to define it for
nitrkey crate's error type. Because of that, we will always have a
mismatch between our internal error and std::convert::Infallible.
Diffstat (limited to 'nitrocli/src/error.rs')
-rw-r--r-- | nitrocli/src/error.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/nitrocli/src/error.rs b/nitrocli/src/error.rs index 1346526..d1eb2eb 100644 --- a/nitrocli/src/error.rs +++ b/nitrocli/src/error.rs @@ -22,6 +22,22 @@ use std::io; use std::str; use std::string; +/// A trait used to simplify error handling in conjunction with the +/// try_with_* functions we use for repeatedly asking the user for a +/// secret. +pub trait TryInto<T> { + fn try_into(self) -> Result<T, Error>; +} + +impl<T, U> TryInto<U> for T +where + T: Into<U>, +{ + fn try_into(self) -> Result<U, Error> { + Ok(self.into()) + } +} + #[derive(Debug)] pub enum Error { ArgparseError(i32), |