diff options
Diffstat (limited to 'src/config.rs')
-rw-r--r-- | src/config.rs | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/config.rs b/src/config.rs index 2ce6f77..cb678d7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,9 @@ -use crate::util::CommandError; +// Copyright (C) 2018-2019 Robin Krahl <robin.krahl@ireas.org> +// SPDX-License-Identifier: MIT + +use std::convert; + +use crate::error::{Error, LibraryError}; /// The configuration for a Nitrokey. #[derive(Clone, Copy, Debug, PartialEq)] @@ -30,21 +35,21 @@ pub struct RawConfig { fn config_otp_slot_to_option(value: u8) -> Option<u8> { if value < 3 { - return Some(value); + Some(value) + } else { + None } - None } -fn option_to_config_otp_slot(value: Option<u8>) -> Result<u8, CommandError> { - match value { - Some(value) => { - if value < 3 { - Ok(value) - } else { - Err(CommandError::InvalidSlot) - } +fn option_to_config_otp_slot(value: Option<u8>) -> Result<u8, Error> { + if let Some(value) = value { + if value < 3 { + Ok(value) + } else { + Err(LibraryError::InvalidSlot.into()) } - None => Ok(255), + } else { + Ok(255) } } @@ -65,8 +70,10 @@ impl Config { } } -impl RawConfig { - pub fn try_from(config: Config) -> Result<RawConfig, CommandError> { +impl convert::TryFrom<Config> for RawConfig { + type Error = Error; + + fn try_from(config: Config) -> Result<RawConfig, Error> { Ok(RawConfig { numlock: option_to_config_otp_slot(config.numlock)?, capslock: option_to_config_otp_slot(config.capslock)?, |