filter_expr_evaler/
callable.rs1use std::sync::Arc;
2
3use crate::{Error, FilterExprEvalerEnv, Value};
4
5pub struct FunctionContext<'env, 'a> {
7 pub env: &'env FilterExprEvalerEnv,
8
9 pub args: &'a [Value],
10}
11
12#[async_trait::async_trait]
14pub trait Function: Send + Sync {
15 async fn call(&self, ctx: FunctionContext<'_, '_>) -> Result<Value, Error>;
17}
18
19pub type ArcFunction = Arc<dyn Function>;
21
22pub struct MethodContext<'env, 'a> {
24 pub env: &'env FilterExprEvalerEnv,
25
26 pub obj: &'a Value,
27 pub args: &'a [Value],
28}
29
30#[async_trait::async_trait]
32pub trait Method: Send + Sync {
33 async fn call(&self, ctx: MethodContext<'_, '_>) -> Result<Value, Error>;
35}
36
37pub type ArcMethod = Arc<dyn Method>;