syn_utils/type_parser/
mod.rs

1mod primitives;
2mod rust_type;
3pub use rust_type::*;
4mod type_info;
5
6pub use primitives::*;
7pub use type_info::*;
8
9use crate::*;
10
11#[derive(Debug, Clone, PartialEq, Eq, Hash)]
12pub struct Ref {
13  pub lifetime: Option<Lifetime>,
14  pub kind: RefKind,
15}
16
17impl ToTokens for Ref {
18  fn to_tokens(&self, tokens: &mut TokenStream2) {
19    let lifetime = &self.lifetime;
20    let output = match &self.kind {
21      RefKind::Ref => quote! { & #lifetime },
22      RefKind::MutRef => quote! { & #lifetime mut },
23    };
24
25    tokens.extend(output);
26  }
27}
28
29#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
30pub enum RefKind {
31  Ref,
32  MutRef,
33}
34
35#[derive(Debug, Clone, PartialEq, Eq, Hash)]
36pub struct Array {
37  pub len: Expr,
38  pub inner: Rc<TypeInfo>,
39}