Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-plan/src/dsl/expr/anonymous/named_serde.rs
8431 views
1
use std::sync::{Arc, LazyLock, RwLock};
2
3
use polars_error::PolarsResult;
4
5
use super::AnonymousColumnsUdf;
6
use super::agg::AnonymousAgg;
7
8
// Can be used to have named anonymous functions.
9
// The receiver must have implemented this registry and map the names to the proper UDFs.
10
pub trait ExprRegistry: Sync + Send {
11
#[allow(unused)]
12
fn get_function(&self, name: &str, payload: &[u8]) -> Option<Arc<dyn AnonymousColumnsUdf>> {
13
None
14
}
15
16
#[allow(unused)]
17
fn get_agg(&self, name: &str, payload: &[u8]) -> PolarsResult<Option<Arc<dyn AnonymousAgg>>> {
18
Ok(None)
19
}
20
}
21
22
pub(super) static NAMED_SERDE_REGISTRY_EXPR: LazyLock<RwLock<Option<Arc<dyn ExprRegistry>>>> =
23
LazyLock::new(Default::default);
24
25
pub fn set_named_serde_registry(reg: Arc<dyn ExprRegistry>) {
26
let mut lock = NAMED_SERDE_REGISTRY_EXPR.write().unwrap();
27
*lock = Some(reg);
28
}
29
30