@@ -50,8 +50,7 @@ pub fn range(expr: &hir::Expr) -> Option<Range> {
5050 fn get_field < ' a > ( name : & str , fields : & ' a [ hir:: Field ] ) -> Option < & ' a hir:: Expr > {
5151 let expr = & fields
5252 . iter ( )
53- . find ( |field| field. name . node == name)
54- . unwrap_or_else ( || panic ! ( "missing {} field for range" , name) )
53+ . find ( |field| field. name . node == name) ?
5554 . expr ;
5655
5756 Some ( expr)
@@ -77,32 +76,32 @@ pub fn range(expr: &hir::Expr) -> Option<Range> {
7776 match_qpath ( path, & paths:: RANGE_FROM )
7877 {
7978 Some ( Range {
80- start : get_field ( "start" , fields) ,
79+ start : Some ( get_field ( "start" , fields) ? ) ,
8180 end : None ,
8281 limits : ast:: RangeLimits :: HalfOpen ,
8382 } )
8483 } else if match_qpath ( path, & paths:: RANGE_INCLUSIVE_STD ) || match_qpath ( path, & paths:: RANGE_INCLUSIVE ) {
8584 Some ( Range {
86- start : get_field ( "start" , fields) ,
87- end : get_field ( "end" , fields) ,
85+ start : Some ( get_field ( "start" , fields) ? ) ,
86+ end : Some ( get_field ( "end" , fields) ? ) ,
8887 limits : ast:: RangeLimits :: Closed ,
8988 } )
9089 } else if match_qpath ( path, & paths:: RANGE_STD ) || match_qpath ( path, & paths:: RANGE ) {
9190 Some ( Range {
92- start : get_field ( "start" , fields) ,
93- end : get_field ( "end" , fields) ,
91+ start : Some ( get_field ( "start" , fields) ? ) ,
92+ end : Some ( get_field ( "end" , fields) ? ) ,
9493 limits : ast:: RangeLimits :: HalfOpen ,
9594 } )
9695 } else if match_qpath ( path, & paths:: RANGE_TO_INCLUSIVE_STD ) || match_qpath ( path, & paths:: RANGE_TO_INCLUSIVE ) {
9796 Some ( Range {
9897 start : None ,
99- end : get_field ( "end" , fields) ,
98+ end : Some ( get_field ( "end" , fields) ? ) ,
10099 limits : ast:: RangeLimits :: Closed ,
101100 } )
102101 } else if match_qpath ( path, & paths:: RANGE_TO_STD ) || match_qpath ( path, & paths:: RANGE_TO ) {
103102 Some ( Range {
104103 start : None ,
105- end : get_field ( "end" , fields) ,
104+ end : Some ( get_field ( "end" , fields) ? ) ,
106105 limits : ast:: RangeLimits :: HalfOpen ,
107106 } )
108107 } else {
0 commit comments