@@ -50,8 +50,7 @@ pub fn range(expr: &hir::Expr) -> Option<Range> {
50
50
fn get_field < ' a > ( name : & str , fields : & ' a [ hir:: Field ] ) -> Option < & ' a hir:: Expr > {
51
51
let expr = & fields
52
52
. 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) ?
55
54
. expr ;
56
55
57
56
Some ( expr)
@@ -77,32 +76,32 @@ pub fn range(expr: &hir::Expr) -> Option<Range> {
77
76
match_qpath ( path, & paths:: RANGE_FROM )
78
77
{
79
78
Some ( Range {
80
- start : get_field ( "start" , fields) ,
79
+ start : Some ( get_field ( "start" , fields) ? ) ,
81
80
end : None ,
82
81
limits : ast:: RangeLimits :: HalfOpen ,
83
82
} )
84
83
} else if match_qpath ( path, & paths:: RANGE_INCLUSIVE_STD ) || match_qpath ( path, & paths:: RANGE_INCLUSIVE ) {
85
84
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) ? ) ,
88
87
limits : ast:: RangeLimits :: Closed ,
89
88
} )
90
89
} else if match_qpath ( path, & paths:: RANGE_STD ) || match_qpath ( path, & paths:: RANGE ) {
91
90
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) ? ) ,
94
93
limits : ast:: RangeLimits :: HalfOpen ,
95
94
} )
96
95
} else if match_qpath ( path, & paths:: RANGE_TO_INCLUSIVE_STD ) || match_qpath ( path, & paths:: RANGE_TO_INCLUSIVE ) {
97
96
Some ( Range {
98
97
start : None ,
99
- end : get_field ( "end" , fields) ,
98
+ end : Some ( get_field ( "end" , fields) ? ) ,
100
99
limits : ast:: RangeLimits :: Closed ,
101
100
} )
102
101
} else if match_qpath ( path, & paths:: RANGE_TO_STD ) || match_qpath ( path, & paths:: RANGE_TO ) {
103
102
Some ( Range {
104
103
start : None ,
105
- end : get_field ( "end" , fields) ,
104
+ end : Some ( get_field ( "end" , fields) ? ) ,
106
105
limits : ast:: RangeLimits :: HalfOpen ,
107
106
} )
108
107
} else {
0 commit comments