rustidy_ast/item/
union.rs1use {
5 crate::{token, util::Braced},
6 super::{function::{GenericParams, WhereClause}, struct_::StructFields},
7 rustidy_ast_util::{Identifier, delimited},
8 rustidy_format::{Format, Formattable, WhitespaceFormat},
9 rustidy_parse::Parse,
10 rustidy_print::Print,
11 rustidy_util::Whitespace,
12};
13
14#[derive(PartialEq, Eq, Clone, Debug)]
16#[derive(serde::Serialize, serde::Deserialize)]
17#[derive(Parse, Formattable, Format, Print)]
18pub struct Union {
19 pub union: token::Union,
20 #[parse(fatal)]
21 #[format(prefix_ws = Whitespace::SINGLE)]
22 pub ident: Identifier,
23 #[format(prefix_ws = Whitespace::REMOVE)]
24 pub generics: Option<GenericParams>,
25 #[format(prefix_ws = Whitespace::INDENT)]
26 pub where_: Option<WhereClause>,
27 #[format(prefix_ws = Whitespace::SINGLE)]
28 #[format(args = delimited::fmt_indent_if_non_blank())]
29 pub fields: Braced<Option<StructFields>>,
30}