typhoon_syn/constraints/
address.rs1use {
2 crate::utils::ContextExpr,
3 syn::{parse::Parse, Expr, Token},
4};
5
6#[derive(Clone)]
7pub struct ConstraintAddress {
8 pub check: ContextExpr,
9 pub error: Option<Expr>,
10}
11
12impl Parse for ConstraintAddress {
13 fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
14 input.parse::<Token![=]>()?;
15 let check: ContextExpr = input.parse()?;
16 let error = if input.peek(Token![@]) {
17 input.parse::<Token![@]>()?;
18 Some(input.parse()?)
19 } else {
20 None
21 };
22
23 Ok(ConstraintAddress { check, error })
24 }
25}