toasty_core/stmt/
expr_in_subquery.rs1use crate::stmt::{Node, Visit, VisitMut};
2
3use super::{Expr, Query};
4
5#[derive(Debug, Clone, PartialEq)]
15pub struct ExprInSubquery {
16 pub expr: Box<Expr>,
18
19 pub query: Box<Query>,
21}
22
23impl Expr {
24 pub fn in_subquery(lhs: impl Into<Self>, rhs: impl Into<Query>) -> Self {
26 ExprInSubquery {
27 expr: Box::new(lhs.into()),
28 query: Box::new(rhs.into()),
29 }
30 .into()
31 }
32
33 pub fn is_in_subquery(&self) -> bool {
35 matches!(self, Self::InSubquery(_))
36 }
37}
38
39impl Node for ExprInSubquery {
40 fn visit<V: Visit>(&self, mut visit: V) {
41 visit.visit_expr_in_subquery(self);
42 }
43
44 fn visit_mut<V: VisitMut>(&mut self, mut visit: V) {
45 visit.visit_expr_in_subquery_mut(self);
46 }
47}
48
49impl From<ExprInSubquery> for Expr {
50 fn from(value: ExprInSubquery) -> Self {
51 Self::InSubquery(value)
52 }
53}