Skip to main content

typhoon_syn/constraints/
address.rs

1use {
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}