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