1 unstable release
Uses old Rust 2015
| 0.0.1 | Jan 21, 2026 |
|---|
#31 in #polyfill
44KB
1K
SLoC
This crates allows writing functions taking any type implementing std::str::pattern::Pattern on stable Rust.
This works by using a "proxy" trait, [Searchable]. Instead of depending on the unstable std::str::pattern::Pattern, you must use [IntoSearchable] as a bound in your code. This in turns lets you use the functions defined in [StrPatternExt], which mimc the ones defined on [str], except that they end with an underscore.
On top of the implementors of std::str::pattern::Pattern, the [WhiteSpace] type is also provided, with also implements [IntoSearchable].
Example
fn starts_and_ends_with(haystack: &str, p: impl IntoSearchable + Clone) -> bool {
haystack.starts_with_(p.clone()) && haystack.ends_with_(p)
}
assert!(starts_and_ends_with("aa bb aa", "aa"));
assert!(starts_and_ends_with("aa bb aa", 'a'));
assert!(starts_and_ends_with("aa bb cc", ['a','c']));
assert!(starts_and_ends_with("\t bb \n", WhiteSpace));
Stable polyfill to be able to depends on a trait that mimics str::pattern::Pattern on stable Rust.
fn starts_and_ends_with(haystack: &str, p: impl IntoSearchable + Clone) -> bool {
haystack.starts_with_(p.clone()) && haystack.ends_with_(p)
}
assert!(starts_and_ends_with("aa bb aa", "aa"));
assert!(starts_and_ends_with("aa bb aa", 'a'));
assert!(starts_and_ends_with("aa bb cc", ['a','c']));
assert!(starts_and_ends_with("\t bb \n", WhiteSpace));
No runtime deps
Features
- 1.0
- 1.1
- 1.10
- 1.11
- 1.12
- 1.13
- 1.14
- 1.15
- 1.16
- 1.17
- 1.18
- 1.19
- 1.2
- 1.20
- 1.21
- 1.22
- 1.23
- 1.24
- 1.25
- 1.26
- 1.27
- 1.28
- 1.29
- 1.3
- 1.30
- 1.31
- 1.32
- 1.33
- 1.34
- 1.35
- 1.36
- 1.37
- 1.38
- 1.39
- 1.4
- 1.40
- 1.41
- 1.42
- 1.43
- 1.44
- 1.45
- 1.46
- 1.47
- 1.48
- 1.49
- 1.5
- 1.50
- 1.51
- 1.52
- 1.53
- 1.54
- 1.55
- 1.56
- 1.57
- 1.58
- 1.59
- 1.6
- 1.60
- 1.61
- 1.62
- 1.63
- 1.64
- 1.65
- 1.66
- 1.67
- 1.68
- 1.69
- 1.7
- 1.70
- 1.71
- 1.72
- 1.73
- 1.74
- 1.75
- 1.76
- 1.77
- 1.78
- 1.79
- 1.8
- 1.80
- 1.81
- 1.82
- 1.83
- 1.84
- 1.85
- 1.86
- 1.87
- 1.88
- 1.89
- 1.9
- 1.90
- 1.91
- latest