@@ -247,24 +247,15 @@ fn path_ends_with(path: &Path, ident: &str) -> bool {
247247
248248fn match_impl_iterator ( TypeImplTrait { bounds, .. } : & TypeImplTrait ) -> Option < & Type > {
249249 for bound in bounds {
250- if let TypeParamBound :: Trait ( TraitBound { path, .. } ) = bound {
251- if let Some ( last_segment) = path. segments . last ( ) {
252- if last_segment. ident == "Iterator" {
253- if let PathArguments :: AngleBracketed ( AngleBracketedGenericArguments {
254- args,
255- ..
256- } ) = & last_segment. arguments
257- {
258- if let Some ( GenericArgument :: AssocType ( AssocType { ident, ty, .. } ) ) =
259- args. first ( )
260- {
261- if ident == "Item" {
262- return Some ( ty) ;
263- }
264- }
265- }
266- }
267- }
250+ if let TypeParamBound :: Trait ( TraitBound { path, .. } ) = bound
251+ && let Some ( last_segment) = path. segments . last ( )
252+ && last_segment. ident == "Iterator"
253+ && let PathArguments :: AngleBracketed ( AngleBracketedGenericArguments { args, .. } ) =
254+ & last_segment. arguments
255+ && let Some ( GenericArgument :: AssocType ( AssocType { ident, ty, .. } ) ) = args. first ( )
256+ && ident == "Item"
257+ {
258+ return Some ( ty) ;
268259 }
269260 }
270261 None
@@ -279,17 +270,15 @@ fn known_container(path: &Path) -> Option<(&Ident, &Type)> {
279270 if [ "Box" , "Cell" , "RefCell" , "Arc" , "Rc" , "Mutex" ]
280271 . iter ( )
281272 . any ( |v| last. ident == v)
282- {
283- if let PathArguments :: AngleBracketed ( AngleBracketedGenericArguments { args, .. } ) =
273+ && let PathArguments :: AngleBracketed ( AngleBracketedGenericArguments { args, .. } ) =
284274 & last. arguments
275+ {
276+ // TODO: Skip lifetime args.
277+ // TODO: Return the path with args stripped out.
278+ if args. len ( ) == 1
279+ && let Some ( GenericArgument :: Type ( inner_type) ) = args. first ( )
285280 {
286- // TODO: Skip lifetime args.
287- // TODO: Return the path with args stripped out.
288- if args. len ( ) == 1 {
289- if let Some ( GenericArgument :: Type ( inner_type) ) = args. first ( ) {
290- return Some ( ( & last. ident , inner_type) ) ;
291- }
292- }
281+ return Some ( ( & last. ident , inner_type) ) ;
293282 }
294283 }
295284 None
@@ -318,10 +307,10 @@ fn known_collection(path: &Path) -> Option<(&Ident, &Type)> {
318307 {
319308 // TODO: Skip lifetime args.
320309 // TODO: Return the path with args stripped out.
321- if args. len ( ) == 1 {
322- if let Some ( GenericArgument :: Type ( inner_type) ) = args. first ( ) {
323- return Some ( ( & last . ident , inner_type ) ) ;
324- }
310+ if args. len ( ) == 1
311+ && let Some ( GenericArgument :: Type ( inner_type) ) = args. first ( )
312+ {
313+ return Some ( ( & last . ident , inner_type ) ) ;
325314 }
326315 }
327316 None
@@ -421,16 +410,15 @@ fn path_is_nonzero_unsigned(path: &Path) -> bool {
421410fn match_first_type_arg < ' p > ( path : & ' p Path , expected_ident : & str ) -> Option < & ' p Type > {
422411 // TODO: Maybe match only things with one arg?
423412 let last = path. segments . last ( ) ?;
424- if last. ident == expected_ident {
425- if let PathArguments :: AngleBracketed ( AngleBracketedGenericArguments { args, .. } ) =
413+ if last. ident == expected_ident
414+ && let PathArguments :: AngleBracketed ( AngleBracketedGenericArguments { args, .. } ) =
426415 & last. arguments
427- {
428- for arg in args {
429- match arg {
430- GenericArgument :: Type ( arg_type) => return Some ( arg_type) ,
431- GenericArgument :: Lifetime ( _) => ( ) ,
432- _ => return None ,
433- }
416+ {
417+ for arg in args {
418+ match arg {
419+ GenericArgument :: Type ( arg_type) => return Some ( arg_type) ,
420+ GenericArgument :: Lifetime ( _) => ( ) ,
421+ _ => return None ,
434422 }
435423 }
436424 }
0 commit comments