typhoon_syn/constraints/
mint.rs1use syn::{parse::Parse, Expr, Ident, Token};
2
3#[derive(Clone)]
4pub enum ConstraintMint {
5 Authority(Expr),
6 Decimals(Expr),
7 FreezeAuthority(Expr),
8}
9
10impl Parse for ConstraintMint {
11 fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
12 input.parse::<Token![::]>()?;
13 let name = input.parse::<Ident>()?.to_string();
14 match name.as_str() {
15 "authority" => {
16 input.parse::<Token![=]>()?;
17
18 Ok(ConstraintMint::Authority(input.parse()?))
19 }
20 "decimals" => {
21 input.parse::<Token![=]>()?;
22
23 Ok(ConstraintMint::Decimals(input.parse()?))
24 }
25 "freeze_authority" => {
26 input.parse::<Token![=]>()?;
27 Ok(ConstraintMint::FreezeAuthority(input.parse()?))
28 }
29 _ => Err(syn::Error::new(
30 input.span(),
31 "Invalid variant for the token constraint.",
32 )),
33 }
34 }
35}