sway_ast/item/
item_impl.rs1use 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}