@@ -940,7 +940,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
940
940
}
941
941
ConstructorSet :: Variants { variants, non_exhaustive } => {
942
942
let mut seen_set = index:: IdxSet :: new_empty ( variants. len ( ) ) ;
943
- for idx in seen. iter ( ) . map ( |c| c. as_variant ( ) . unwrap ( ) ) {
943
+ for idx in seen. iter ( ) . filter_map ( |c| c. as_variant ( ) ) {
944
944
seen_set. insert ( idx) ;
945
945
}
946
946
let mut skipped_a_hidden_variant = false ;
@@ -969,7 +969,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
969
969
ConstructorSet :: Bool => {
970
970
let mut seen_false = false ;
971
971
let mut seen_true = false ;
972
- for b in seen. iter ( ) . map ( |ctor| ctor. as_bool ( ) . unwrap ( ) ) {
972
+ for b in seen. iter ( ) . filter_map ( |ctor| ctor. as_bool ( ) ) {
973
973
if b {
974
974
seen_true = true ;
975
975
} else {
@@ -989,7 +989,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
989
989
}
990
990
ConstructorSet :: Integers { range_1, range_2 } => {
991
991
let seen_ranges: Vec < _ > =
992
- seen. iter ( ) . map ( |ctor| * ctor. as_int_range ( ) . unwrap ( ) ) . collect ( ) ;
992
+ seen. iter ( ) . filter_map ( |ctor| ctor. as_int_range ( ) ) . copied ( ) . collect ( ) ;
993
993
for ( seen, splitted_range) in range_1. split ( seen_ranges. iter ( ) . cloned ( ) ) {
994
994
match seen {
995
995
Presence :: Unseen => missing. push ( IntRange ( splitted_range) ) ,
@@ -1006,7 +1006,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
1006
1006
}
1007
1007
}
1008
1008
ConstructorSet :: Slice { array_len, subtype_is_empty } => {
1009
- let seen_slices = seen. iter ( ) . map ( |c| c. as_slice ( ) . unwrap ( ) ) ;
1009
+ let seen_slices = seen. iter ( ) . filter_map ( |c| c. as_slice ( ) ) ;
1010
1010
let base_slice = Slice :: new ( * array_len, VarLen ( 0 , 0 ) ) ;
1011
1011
for ( seen, splitted_slice) in base_slice. split ( seen_slices) {
1012
1012
let ctor = Slice ( splitted_slice) ;
0 commit comments