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