From f16740b8375f73204f90c545643e1f952fe868de Mon Sep 17 00:00:00 2001 From: imxyy_soope_ Date: Mon, 5 May 2025 14:12:32 +0800 Subject: [PATCH] feat: lazy regex --- src/bytecode.rs | 2 -- src/ty/common.rs | 5 ++++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bytecode.rs b/src/bytecode.rs index 2592755..17c311a 100644 --- a/src/bytecode.rs +++ b/src/bytecode.rs @@ -1,5 +1,3 @@ -use std::fmt::{Debug, Formatter, Result}; - use ecow::EcoString; use crate::ty::internal::Const; diff --git a/src/ty/common.rs b/src/ty/common.rs index 58913b1..34002db 100644 --- a/src/ty/common.rs +++ b/src/ty/common.rs @@ -1,6 +1,8 @@ use std::fmt::{Display, Formatter, Result as FmtResult}; use std::ops::Deref; +use std::sync::LazyLock; + use derive_more::Constructor; use ecow::EcoString; use regex::Regex; @@ -39,9 +41,10 @@ impl Display for Symbol { } } +static REGEX: LazyLock = LazyLock::new(|| Regex::new(r#"^[a-zA-Z\_][a-zA-Z0-9\_\'\-]*$"#).unwrap()); impl Symbol { fn normal(&self) -> bool { - !Regex::new(r#"^[a-zA-Z\_][a-zA-Z0-9\_\'\-]*$"#).unwrap().is_match(self) + !REGEX.is_match(self) } }