@@ -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