Rust Regex crate提供了语法扩展,regex!
可以在标准编译时间内编译正则表达式。这有两个好处:
- 我们不需要在运行时做这项工作(更好的程序性能)
- 如果我们的正则表达式格式错误,编译器可以在编译期间告诉我们,而不是触发运行时恐慌
不幸的是,文档说:
警告:编译
regex!
器插件比正常Regex::new(...)
使用慢几个数量级。除非您有非常特殊的原因,否则不应使用编译器插件。
这听起来像是用于regex!
与 for完全不同的正则表达式引擎Regex::new()
。为什么不regex!()
只是一个包装器Regex::new()
来结合两个世界的优势?据我了解,这些语法扩展编译器插件可以执行任意代码;为什么不Regex::new()
呢?