8 个版本
0.2.1 | 2020年10月16日 |
---|---|
0.2.0 | 2018年5月22日 |
0.1.6 | 2018年3月8日 |
0.1.5 | 2017年7月12日 |
#137 in 缓存
114,658 每月下载
用于 33 个 Crates (2 直接)
25KB
382 代码行
regex-cache
此 crate 提供了一个用于缓存或延迟创建正则表达式的库。
延迟正则表达式由 OnceMutex 支持,而正则表达式缓存则由最少使用(LRU)缓存支持。
为什么不使用 lazy_static!
?
lazy_static!
很好,但它只在你知道正则表达式是什么的时候才可用。
在某些情况下,你可能正在加载大量正则表达式(例如 libphonenumber),你最终可能会使用它们,但不想将它们作为 String
存储,因为这会使你失去类型信息并降低使用便捷性。
何时使用 LazyRegex
当你有很多正则表达式不希望立即使用,且不关心延迟正则表达式编译时。
何时使用 RegexCache
当你想要限制活动正则表达式的数量时,RegexCache
只保留一定数量的活动正则表达式。
由于它是一个 LRU 缓存,因此有一个小的限制,每次使用不同的正则表达式最终会浪费内存和时间。
何时使用 CachedRegex
当你想透明地使用 RegexCache
并仍然使用易于使用和具有类型的正则表达式,而不是将 String
存储起来以便随后与 RegexCache
编译。
请注意,存储在 CachedRegex
中的内容是一个 Arc<Mutex<RegexCache>>
,这意味着在调用 CachedRegex
的任何方法时都会涉及到锁定。
由于技术原因,无法从 CachedRegex
中获取 &Regex
,并且一些来自 Regex
的方法在 CachedRegex
上不可用,但对于大多数用途来说仍然应该没问题。
依赖项
~3.5MB
~70K SLoC