@@ -165,8 +165,8 @@ pub fn match_trait_method(cx: &LateContext<'_, '_>, expr: &Expr<'_>, path: &[&st
165165/// Checks if an expression references a variable of the given name.
166166pub fn match_var ( expr : & Expr < ' _ > , var : Name ) -> bool {
167167 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 ;
170170 }
171171 }
172172 false
@@ -181,8 +181,7 @@ pub fn last_path_segment<'tcx>(path: &QPath<'tcx>) -> &'tcx PathSegment<'tcx> {
181181
182182pub fn single_segment_path < ' tcx > ( path : & QPath < ' tcx > ) -> Option < & ' tcx PathSegment < ' tcx > > {
183183 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 ) ,
186185 QPath :: TypeRelative ( _, ref seg) => Some ( seg) ,
187186 }
188187}
@@ -201,9 +200,12 @@ pub fn match_qpath(path: &QPath<'_>, segments: &[&str]) -> bool {
201200 QPath :: Resolved ( _, ref path) => match_path ( path, segments) ,
202201 QPath :: TypeRelative ( ref ty, ref segment) => match ty. kind {
203202 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
207209 } ,
208210 _ => false ,
209211 } ,
0 commit comments