    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    pub mod ast;
    pub mod attr;

    mod ctxt;
    pub use self::ctxt::Ctxt;

    mod receiver;
    pub use self::receiver::replace_receiver;

    mod case;
    mod check;
    mod respan;
    mod symbol;

    use syn::Type;

    #[derive(Copy, Clone)]
    pub enum Derive {
        Serialize,
        Deserialize,
    }

    pub fn ungroup(mut ty: &Type) -> &Type {
        while let Type::Group(group) = ty {
            ty = &group.elem;
        }
        ty
    }