Skip to main content

typhoon_syn/constraints/
has_one.rs

1use syn::{parse::Parse, Expr, Ident, Token};
2
3#[derive(Clone)]
4pub struct ConstraintHasOne {
5    pub join_target: Ident,
6    pub error: Option<Expr>,
7}
8
9impl Parse for ConstraintHasOne {
10    fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
11        input.parse::<Token![=]>()?;
12        let join_target = input.parse()?;
13        let error = if input.peek(Token![@]) {
14            input.parse::<Token![@]>()?;
15            Some(input.parse()?)
16        } else {
17            None
18        };
19
20        Ok(ConstraintHasOne { join_target, error })
21    }
22}