From 82231bf66d07ecd81607151924b10151309df6c7 Mon Sep 17 00:00:00 2001 From: Expyron <5100376+Expyron@users.noreply.github.com> Date: Tue, 21 Jul 2026 18:28:37 +0200 Subject: [PATCH] chore: replace `lazy_static` with `LazyLock` (#3679) --- Cargo.lock | 1 - Cargo.toml | 1 - rust/lancedb/Cargo.toml | 1 - rust/lancedb/src/expr.rs | 26 +++++++++++++------------- rust/lancedb/src/utils/mod.rs | 10 ++++------ 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 615cda754..5312a12ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5432,7 +5432,6 @@ dependencies = [ "lance-namespace-impls", "lance-table", "lance-testing", - "lazy_static", "log", "metrics", "metrics-util", diff --git a/Cargo.toml b/Cargo.toml index 7632a1a34..c494023b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,7 +64,6 @@ snafu = "0.8" url = "2" num-traits = "0.2" regex = "1.10" -lazy_static = "1" semver = "1.0.25" chrono = "0.4" diff --git a/rust/lancedb/Cargo.toml b/rust/lancedb/Cargo.toml index 791ee3d64..3be464a71 100644 --- a/rust/lancedb/Cargo.toml +++ b/rust/lancedb/Cargo.toml @@ -34,7 +34,6 @@ datafusion.workspace = true object_store = { workspace = true } snafu = { workspace = true } half = { workspace = true } -lazy_static.workspace = true lance = { workspace = true } lance-core = { workspace = true } lance-datafusion.workspace = true diff --git a/rust/lancedb/src/expr.rs b/rust/lancedb/src/expr.rs index de245d796..75cce443d 100644 --- a/rust/lancedb/src/expr.rs +++ b/rust/lancedb/src/expr.rs @@ -61,29 +61,29 @@ pub fn is_in(expr: Expr, list: Vec) -> Expr { expr.in_list(list, false) } -lazy_static::lazy_static! { - static ref FUNC_REGISTRY: std::sync::RwLock>> = { +static FUNC_REGISTRY: std::sync::LazyLock>> = + std::sync::LazyLock::new(|| { let mut m = std::collections::HashMap::new(); m.insert("lower".to_string(), datafusion_functions::string::lower()); m.insert("upper".to_string(), datafusion_functions::string::upper()); - m.insert("contains".to_string(), datafusion_functions::string::contains()); + m.insert( + "contains".to_string(), + datafusion_functions::string::contains(), + ); m.insert("btrim".to_string(), datafusion_functions::string::btrim()); m.insert("ltrim".to_string(), datafusion_functions::string::ltrim()); m.insert("rtrim".to_string(), datafusion_functions::string::rtrim()); m.insert("concat".to_string(), datafusion_functions::string::concat()); - m.insert("octet_length".to_string(), datafusion_functions::string::octet_length()); - std::sync::RwLock::new(m) - }; -} + m.insert( + "octet_length".to_string(), + datafusion_functions::string::octet_length(), + ); + m + }); pub fn func(name: impl AsRef, args: Vec) -> crate::Result { let name = name.as_ref(); - let registry = FUNC_REGISTRY - .read() - .map_err(|e| crate::Error::InvalidInput { - message: format!("lock poisoned: {}", e), - })?; - let udf = registry + let udf = FUNC_REGISTRY .get(name) .ok_or_else(|| crate::Error::InvalidInput { message: format!("unknown function: {}", name), diff --git a/rust/lancedb/src/utils/mod.rs b/rust/lancedb/src/utils/mod.rs index c0b4424ad..8bd306988 100644 --- a/rust/lancedb/src/utils/mod.rs +++ b/rust/lancedb/src/utils/mod.rs @@ -14,17 +14,15 @@ use lance::arrow::json::JsonDataType; use lance::dataset::{ReadParams, WriteParams}; use lance::index::vector::utils::infer_vector_dim; use lance::io::{ObjectStoreParams, WrappingObjectStore}; -use lazy_static::lazy_static; use std::pin::Pin; use crate::error::{Error, Result}; use datafusion_physical_plan::SendableRecordBatchStream; -lazy_static! { - static ref TABLE_NAME_REGEX: regex::Regex = regex::Regex::new(r"^[a-zA-Z0-9_\-\.]+$").unwrap(); - static ref NAMESPACE_NAME_REGEX: regex::Regex = - regex::Regex::new(r"^[a-zA-Z0-9_\-\.]+$").unwrap(); -} +static TABLE_NAME_REGEX: std::sync::LazyLock = + std::sync::LazyLock::new(|| regex::Regex::new(r"^[a-zA-Z0-9_\-\.]+$").unwrap()); +static NAMESPACE_NAME_REGEX: std::sync::LazyLock = + std::sync::LazyLock::new(|| regex::Regex::new(r"^[a-zA-Z0-9_\-\.]+$").unwrap()); pub trait PatchStoreParam { fn patch_with_store_wrapper(