Skip to main content

rustidy_ast/item/
union.rs

1//! Union
2
3// Imports
4use {
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/// `Union`
15#[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}