typhoon_syn/constraints/
has_one.rs1use 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}