@@ -940,7 +940,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
940940 }
941941 ConstructorSet :: Variants { variants, non_exhaustive } => {
942942 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 ( ) ) {
944944 seen_set. insert ( idx) ;
945945 }
946946 let mut skipped_a_hidden_variant = false ;
@@ -969,7 +969,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
969969 ConstructorSet :: Bool => {
970970 let mut seen_false = false ;
971971 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 ( ) ) {
973973 if b {
974974 seen_true = true ;
975975 } else {
@@ -989,7 +989,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
989989 }
990990 ConstructorSet :: Integers { range_1, range_2 } => {
991991 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 ( ) ;
993993 for ( seen, splitted_range) in range_1. split ( seen_ranges. iter ( ) . cloned ( ) ) {
994994 match seen {
995995 Presence :: Unseen => missing. push ( IntRange ( splitted_range) ) ,
@@ -1006,7 +1006,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
10061006 }
10071007 }
10081008 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 ( ) ) ;
10101010 let base_slice = Slice :: new ( * array_len, VarLen ( 0 , 0 ) ) ;
10111011 for ( seen, splitted_slice) in base_slice. split ( seen_slices) {
10121012 let ctor = Slice ( splitted_slice) ;
0 commit comments