mir/
class.rs

1use crate::{Doc, Function, Ident, Import, Item, Visibility};
2use proc_macro2::TokenStream;
3use std::fmt::{Debug, Formatter};
4
5#[derive(Default)]
6pub struct Class<T> {
7    pub vis: Visibility,
8    pub name: Ident,
9    pub doc: Option<Doc>,
10    pub fields: Vec<Field<T>>,
11    pub methods: Vec<Function<T>>,
12    pub attributes: Vec<T>,
13    pub lifetimes: Vec<String>,
14    pub items: Vec<Item<TokenStream>>,
15    pub imports: Vec<Import>,
16}
17
18#[derive(Debug, Default)]
19pub struct Field<T> {
20    pub name: Ident,
21    pub ty: T,
22    pub default: Option<T>,
23    pub vis: Visibility,
24    pub doc: Option<Doc>,
25    pub optional: bool,
26    pub attributes: Vec<T>,
27}
28
29impl Debug for Class<String> {
30    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
31        f.debug_struct("Class")
32            .field("name", &self.name)
33            .field("doc", &self.doc)
34            .field("fields", &self.fields)
35            .field("vis", &self.vis)
36            .finish()
37    }
38}