Simplified Logic when comparing discriminants
Removed matches that were used to compare Enum variants for equality in favor of using discriminant from https://doc.rust-lang.org/std/mem/fn.discriminant.html introduced in Rust 1.21.0
This commit is contained in:
parent
2b51f841bc
commit
64e2f4742f
14
src/de.rs
14
src/de.rs
|
@ -8,6 +8,7 @@ use std::borrow::Cow;
|
||||||
use std::error;
|
use std::error;
|
||||||
use std::f64;
|
use std::f64;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
use std::mem::discriminant;
|
||||||
use std::str;
|
use std::str;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
|
||||||
|
@ -2057,17 +2058,6 @@ impl<'a> E<'a> {
|
||||||
|
|
||||||
impl<'a> Value<'a> {
|
impl<'a> Value<'a> {
|
||||||
fn same_type(&self, other: &Value<'a>) -> bool {
|
fn same_type(&self, other: &Value<'a>) -> bool {
|
||||||
match (&self.e, &other.e) {
|
discriminant(&self.e) == discriminant(&other.e)
|
||||||
(&E::String(..), &E::String(..))
|
|
||||||
| (&E::Integer(..), &E::Integer(..))
|
|
||||||
| (&E::Float(..), &E::Float(..))
|
|
||||||
| (&E::Boolean(..), &E::Boolean(..))
|
|
||||||
| (&E::Datetime(..), &E::Datetime(..))
|
|
||||||
| (&E::Array(..), &E::Array(..))
|
|
||||||
| (&E::InlineTable(..), &E::InlineTable(..)) => true,
|
|
||||||
(&E::DottedTable(..), &E::DottedTable(..)) => true,
|
|
||||||
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
13
src/value.rs
13
src/value.rs
|
@ -3,6 +3,7 @@
|
||||||
use std::collections::{BTreeMap, HashMap};
|
use std::collections::{BTreeMap, HashMap};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
|
use std::mem::discriminant;
|
||||||
use std::ops;
|
use std::ops;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
@ -212,17 +213,7 @@ impl Value {
|
||||||
|
|
||||||
/// Tests whether this and another value have the same type.
|
/// Tests whether this and another value have the same type.
|
||||||
pub fn same_type(&self, other: &Value) -> bool {
|
pub fn same_type(&self, other: &Value) -> bool {
|
||||||
match (self, other) {
|
discriminant(self) == discriminant(other)
|
||||||
(&Value::String(..), &Value::String(..))
|
|
||||||
| (&Value::Integer(..), &Value::Integer(..))
|
|
||||||
| (&Value::Float(..), &Value::Float(..))
|
|
||||||
| (&Value::Boolean(..), &Value::Boolean(..))
|
|
||||||
| (&Value::Datetime(..), &Value::Datetime(..))
|
|
||||||
| (&Value::Array(..), &Value::Array(..))
|
|
||||||
| (&Value::Table(..), &Value::Table(..)) => true,
|
|
||||||
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a human-readable representation of the type of this value.
|
/// Returns a human-readable representation of the type of this value.
|
||||||
|
|
Loading…
Reference in a new issue