diff options
| -rw-r--r-- | src/lib.rs | 13 | ||||
| -rw-r--r-- | src/syn_utils.rs | 13 | ||||
| -rw-r--r-- | src/trait_sig.rs | 6 | ||||
| -rw-r--r-- | src/transform.rs | 2 | 
4 files changed, 14 insertions, 20 deletions
| @@ -33,7 +33,6 @@ use syn::TypeParam;  use syn::TypeParamBound;  use syn::TypePath;  use syn::Visibility; -use syn_utils::TypeOrPath;  use crate::parse_assoc_type::parse_assoc_type;  use crate::parse_assoc_type::AssocTypeError; @@ -373,20 +372,20 @@ fn generate_blanket_impl(      }  } -fn path_is_assoc_type(path: &Path) -> bool { -    path.segments[0].ident == "Self" +fn path_is_assoc_type(path: &TypePath) -> bool { +    path.path.segments[0].ident == "Self"  } -fn match_assoc_type(item: TypeOrPath) -> bool { -    if let TypeOrPath::Path(path) = item { +fn match_assoc_type(item: &Type) -> bool { +    if let Type::Path(path) = item {          return path_is_assoc_type(path);      }      false  } -fn filter_map_assoc_paths(item: TypeOrPath) -> Option<&Path> { +fn filter_map_assoc_paths(item: &Type) -> Option<&TypePath> {      match item { -        TypeOrPath::Path(p) if path_is_assoc_type(p) => Some(p), +        Type::Path(p) if path_is_assoc_type(p) => Some(p),          _other => None,      }  } diff --git a/src/syn_utils.rs b/src/syn_utils.rs index 00efee0..369aeb7 100644 --- a/src/syn_utils.rs +++ b/src/syn_utils.rs @@ -32,11 +32,6 @@ pub fn type_arguments_mut<P>(      })  } -pub enum TypeOrPath<'a> { -    Type(&'a Type), -    Path(&'a Path), -} -  enum IterTypes<A, B, C, D, E, F> {      Single(A),      Function(B), @@ -71,13 +66,13 @@ where      }  } -pub fn iter_path(path: &Path) -> impl Iterator<Item = TypeOrPath> { -    iter::once(TypeOrPath::Path(path)).chain(types_in_path(path).flat_map(|t| iter_type(t))) +pub fn iter_path(path: &Path) -> impl Iterator<Item = &Type> { +    types_in_path(path).flat_map(|t| iter_type(t))  } -pub fn iter_type<'a>(t: &'a Type) -> Box<dyn Iterator<Item = TypeOrPath<'a>> + 'a> { +pub fn iter_type<'a>(t: &'a Type) -> Box<dyn Iterator<Item = &'a Type> + 'a> {      Box::new( -        iter::once(TypeOrPath::Type(t)).chain(match t { +        iter::once(t).chain(match t {              Type::Array(array) => IterTypes::Single(iter_type(&array.elem)),              Type::Group(group) => IterTypes::Single(iter_type(&group.elem)),              Type::Paren(paren) => IterTypes::Single(iter_type(&paren.elem)), diff --git a/src/trait_sig.rs b/src/trait_sig.rs index 88aac6a..3fb439f 100644 --- a/src/trait_sig.rs +++ b/src/trait_sig.rs @@ -8,7 +8,7 @@ use syn::{Ident, Signature, TypeImplTrait};  use crate::match_assoc_type;  use crate::parse_assoc_type::BoxType; -use crate::syn_utils::{iter_type, trait_bounds, TypeOrPath}; +use crate::syn_utils::{iter_type, trait_bounds};  use crate::transform::{dynamize_function_bounds, TransformError, TypeConverter};  #[derive(Debug, Clone)] @@ -40,9 +40,9 @@ impl From<TransformError> for MethodError {      }  } -fn filter_map_impl_trait(item: TypeOrPath) -> Option<&TypeImplTrait> { +fn filter_map_impl_trait(item: &Type) -> Option<&TypeImplTrait> {      match item { -        TypeOrPath::Type(Type::ImplTrait(impltrait)) => Some(impltrait), +        Type::ImplTrait(impltrait) => Some(impltrait),          _other => None,      }  } diff --git a/src/transform.rs b/src/transform.rs index 831fb14..39d3cab 100644 --- a/src/transform.rs +++ b/src/transform.rs @@ -64,7 +64,7 @@ impl TypeConverter<'_> {              ..          }) = type_          { -            if let Type::Path(TypePath { qself: None, path }) = ty.as_ref() { +            if let Type::Path(path) = ty.as_ref() {                  if path_is_assoc_type(path) {                      return Err((path.span(), TransformError::QualifiedSelfAssociatedType));                  } | 
