1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use std::fmt::Debug; use proc_macro2::Span; use syn::punctuated::Punctuated; use syn::{Generics, Ident, ItemTrait, Token, TypeParamBound, Visibility}; use crate::parse::method_decl::MethodDecl; use crate::result::Result; #[derive(Clone)] #[cfg_attr(feature = "debug-impls", derive(Debug))] pub(crate) struct TraitDecl { pub(crate) visibility: Visibility, pub(crate) span: Span, pub(crate) ident: Ident, pub(crate) generics: Generics, pub(crate) unsafety: Option<Token![unsafe]>, pub(crate) supertraits: Punctuated<TypeParamBound, Token![+]>, pub(crate) methods: Vec<MethodDecl>, } #[cfg_attr(test, mockiato::mockable)] pub(crate) trait TraitDeclParser: Debug { fn parse(&self, item: ItemTrait) -> Result<TraitDecl>; }