@@ -12,7 +12,6 @@ use nom::sequence::tuple;
12
12
use nom:: { Err , IResult , Needed } ;
13
13
use std:: collections:: HashMap ;
14
14
use std:: convert:: From ;
15
- use std:: mem:: discriminant;
16
15
use std:: sync:: Arc ;
17
16
18
17
/// Define an is_valid function needed for parsing here, this function is not needed for normal use
@@ -37,23 +36,7 @@ impl Value {
37
36
Value :: SInt64 ( val) => * val != 0x7FFF_FFFF_FFFF_FFFF ,
38
37
Value :: UInt64 ( val) => * val != 0xFFFF_FFFF_FFFF_FFFF ,
39
38
Value :: UInt64z ( val) => * val != 0x0 ,
40
- Value :: Array ( vals) => {
41
- if let Some ( first) = vals
42
- . iter ( )
43
- . find ( |& v| !matches ! ( v, Value :: Invalid ) )
44
- . map ( discriminant)
45
- {
46
- let mut same_type = true ;
47
- let mut any_valid = false ;
48
- for v in vals {
49
- same_type &= matches ! ( v, Value :: Invalid ) || discriminant ( v) == first;
50
- any_valid |= v. is_valid ( ) ;
51
- }
52
- same_type && any_valid
53
- } else {
54
- false
55
- }
56
- }
39
+ Value :: Array ( vals) => !vals. is_empty ( ) && vals. iter ( ) . any ( |v| v. is_valid ( ) ) ,
57
40
Value :: Invalid => false ,
58
41
}
59
42
}
@@ -827,10 +810,5 @@ mod tests {
827
810
!val. is_valid( ) ,
828
811
"This Value array should be invalid since it contains no valid values"
829
812
) ;
830
- let val = Value :: Array ( vec ! [ Value :: Byte ( 0x12 ) , Value :: UInt8 ( 42u8 ) ] ) ;
831
- assert ! (
832
- !val. is_valid( ) ,
833
- "This Value array should be invalid since it contains differing discriminants"
834
- ) ;
835
813
}
836
814
}
0 commit comments