Don't compile regex at every function call.
Use `SyncOnceCell` to only compile it once. I believe this still adds some kind of locking mechanism?
This commit is contained in:
parent
285fc7d704
commit
f4a7149f49
2 changed files with 10 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
|||
//! A helpful diagram for debugging dataflow problems.
|
||||
|
||||
use std::borrow::Cow;
|
||||
use std::lazy::SyncOnceCell;
|
||||
use std::{io, ops, str};
|
||||
|
||||
use regex::Regex;
|
||||
|
@ -570,6 +571,13 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
macro_rules! regex {
|
||||
($re:literal $(,)?) => {{
|
||||
static RE: SyncOnceCell<regex::Regex> = SyncOnceCell::new();
|
||||
RE.get_or_init(|| Regex::new($re).unwrap())
|
||||
}};
|
||||
}
|
||||
|
||||
fn diff_pretty<T, C>(new: T, old: T, ctxt: &C) -> String
|
||||
where
|
||||
T: DebugWithContext<C>,
|
||||
|
@ -578,7 +586,7 @@ where
|
|||
return String::new();
|
||||
}
|
||||
|
||||
let re = Regex::new("\t?\u{001f}([+-])").unwrap();
|
||||
let re = regex!("\t?\u{001f}([+-])");
|
||||
|
||||
let raw_diff = format!("{:#?}", DebugDiffWithAdapter { new, old, ctxt });
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue