- if let Some(ref minval) = self.min_value {
- let (minres, _) = Self::compare(i64::from(intval), minval)?;
- if !minres {
- return Err(OptionError::InvalidValue);
- }
- }
- if let Some(ref maxval) = self.max_value {
- let (_, maxres) = Self::compare(i64::from(intval), maxval)?;
- if !maxres {
- return Err(OptionError::InvalidValue);
- }
- }
- Ok(())
- },
- NAValue::Long(intval) => {
- if let Some(ref minval) = self.min_value {
- let (minres, _) = Self::compare(intval, minval)?;
- if !minres {
- return Err(OptionError::InvalidValue);
- }
- }
- if let Some(ref maxval) = self.max_value {
- let (_, maxres) = Self::compare(intval, maxval)?;
- if !maxres {
- return Err(OptionError::InvalidValue);
- }
- }
+ match self.opt_type {
+ NAOptionDefinitionType::Int(minval, maxval) => {
+ if let Some(minval) = minval {
+ if intval < minval { return Err(OptionError::InvalidValue); }
+ }
+ if let Some(maxval) = maxval {
+ if intval > maxval { return Err(OptionError::InvalidValue); }
+ }
+ },
+ NAOptionDefinitionType::Float(minval, maxval) => {
+ let fval = intval as f64;
+ if let Some(minval) = minval {
+ if fval < minval { return Err(OptionError::InvalidValue); }
+ }
+ if let Some(maxval) = maxval {
+ if fval > maxval { return Err(OptionError::InvalidValue); }
+ }
+ },
+ _ => return Err(OptionError::InvalidFormat),
+ };