kal 0.5.0

Command Abstraction Layer
Documentation
use crate::{
    CommandArgumentValue, CommandArgumentValueType, TryFromArgumentValue, TryFromArgumentValueError,
};

impl TryFromArgumentValue for String {
    fn try_from_argument_value(
        value: CommandArgumentValue,
        strict: bool,
    ) -> Result<Self, TryFromArgumentValueError> {
        match value {
            CommandArgumentValue::String(v) => Ok(v),
            CommandArgumentValue::I64(ref inner) => {
                if strict {
                    Err(TryFromArgumentValueError {
                        expected_type: CommandArgumentValueType::String,
                        actual_value: value,
                    })
                } else {
                    Ok(inner.to_string())
                }
            }
            CommandArgumentValue::F64(ref inner) => {
                if strict {
                    Err(TryFromArgumentValueError {
                        expected_type: CommandArgumentValueType::String,
                        actual_value: value,
                    })
                } else {
                    Ok(inner.to_string())
                }
            }
        }
    }
}