sway_ast/item/
item_impl.rs

1use crate::priv_prelude::*;
2
3#[derive(Clone, Debug, Serialize)]
4pub enum ItemImplItem {
5    Fn(ItemFn),
6    Const(ItemConst),
7    Type(TraitType),
8}
9
10#[derive(Clone, Debug, Serialize)]
11pub struct ItemImpl {
12    pub impl_token: ImplToken,
13    pub generic_params_opt: Option<GenericParams>,
14    pub trait_opt: Option<(PathType, ForToken)>,
15    pub ty: Ty,
16    pub where_clause_opt: Option<WhereClause>,
17    pub contents: Braces<Vec<Annotated<ItemImplItem>>>,
18}
19
20impl Spanned for ItemImpl {
21    fn span(&self) -> Span {
22        Span::join(self.impl_token.span(), &self.contents.span())
23    }
24}
25
26impl Spanned for ItemImplItem {
27    fn span(&self) -> Span {
28        match self {
29            ItemImplItem::Fn(fn_decl) => fn_decl.span(),
30            ItemImplItem::Const(const_decl) => const_decl.span(),
31            ItemImplItem::Type(type_decl) => type_decl.span(),
32        }
33    }
34}