Skip to main content

surrealdb_expr/expr/
closure.rs

1use std::cmp::Ordering;
2
3use surrealdb_types::{SqlFormat, ToSql};
4
5use crate::expr::{Expr, Kind, Param};
6
7#[derive(Clone, Debug, Eq, PartialEq, Hash)]
8pub struct ClosureExpr {
9	pub args: Vec<(Param, Kind)>,
10	pub returns: Option<Kind>,
11	pub body: Expr,
12}
13
14impl PartialOrd for ClosureExpr {
15	fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
16		Some(self.cmp(other))
17	}
18}
19impl Ord for ClosureExpr {
20	fn cmp(&self, _: &Self) -> Ordering {
21		Ordering::Equal
22	}
23}
24
25impl ToSql for ClosureExpr {
26	fn fmt_sql(&self, f: &mut String, sql_fmt: SqlFormat) {
27		let closure: crate::sql::Closure = self.clone().into();
28		closure.fmt_sql(f, sql_fmt);
29	}
30}