@@ -165,8 +165,8 @@ pub fn match_trait_method(cx: &LateContext<'_, '_>, expr: &Expr<'_>, path: &[&st
165
165
/// Checks if an expression references a variable of the given name.
166
166
pub fn match_var ( expr : & Expr < ' _ > , var : Name ) -> bool {
167
167
if let ExprKind :: Path ( QPath :: Resolved ( None , ref path) ) = expr. kind {
168
- if path . segments . len ( ) == 1 && path . segments [ 0 ] . ident . name == var {
169
- return true ;
168
+ if let [ p ] = path . segments {
169
+ return p . ident . name == var ;
170
170
}
171
171
}
172
172
false
@@ -181,8 +181,7 @@ pub fn last_path_segment<'tcx>(path: &QPath<'tcx>) -> &'tcx PathSegment<'tcx> {
181
181
182
182
pub fn single_segment_path < ' tcx > ( path : & QPath < ' tcx > ) -> Option < & ' tcx PathSegment < ' tcx > > {
183
183
match * path {
184
- QPath :: Resolved ( _, ref path) if path. segments . len ( ) == 1 => Some ( & path. segments [ 0 ] ) ,
185
- QPath :: Resolved ( ..) => None ,
184
+ QPath :: Resolved ( _, ref path) => path. segments . get ( 0 ) ,
186
185
QPath :: TypeRelative ( _, ref seg) => Some ( seg) ,
187
186
}
188
187
}
@@ -201,9 +200,12 @@ pub fn match_qpath(path: &QPath<'_>, segments: &[&str]) -> bool {
201
200
QPath :: Resolved ( _, ref path) => match_path ( path, segments) ,
202
201
QPath :: TypeRelative ( ref ty, ref segment) => match ty. kind {
203
202
TyKind :: Path ( ref inner_path) => {
204
- !segments. is_empty ( )
205
- && match_qpath ( inner_path, & segments[ ..( segments. len ( ) - 1 ) ] )
206
- && segment. ident . name . as_str ( ) == segments[ segments. len ( ) - 1 ]
203
+ if let [ prefix @ .., end] = segments {
204
+ if match_qpath ( inner_path, prefix) {
205
+ return segment. ident . name . as_str ( ) == * end;
206
+ }
207
+ }
208
+ false
207
209
} ,
208
210
_ => false ,
209
211
} ,
0 commit comments