Path: blob/main/crates/polars-plan/src/dsl/expr/anonymous/named_serde.rs
8431 views
use std::sync::{Arc, LazyLock, RwLock};12use polars_error::PolarsResult;34use super::AnonymousColumnsUdf;5use super::agg::AnonymousAgg;67// Can be used to have named anonymous functions.8// The receiver must have implemented this registry and map the names to the proper UDFs.9pub trait ExprRegistry: Sync + Send {10#[allow(unused)]11fn get_function(&self, name: &str, payload: &[u8]) -> Option<Arc<dyn AnonymousColumnsUdf>> {12None13}1415#[allow(unused)]16fn get_agg(&self, name: &str, payload: &[u8]) -> PolarsResult<Option<Arc<dyn AnonymousAgg>>> {17Ok(None)18}19}2021pub(super) static NAMED_SERDE_REGISTRY_EXPR: LazyLock<RwLock<Option<Arc<dyn ExprRegistry>>>> =22LazyLock::new(Default::default);2324pub fn set_named_serde_registry(reg: Arc<dyn ExprRegistry>) {25let mut lock = NAMED_SERDE_REGISTRY_EXPR.write().unwrap();26*lock = Some(reg);27}282930