summaryrefslogtreecommitdiffstats
path: root/src/args.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/args.rs')
-rw-r--r--src/args.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/args.rs b/src/args.rs
index 389de1dd..80693da8 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -599,6 +599,25 @@ impl ArgMatches {
if self.is_present("pcre2") {
let matcher = self.matcher_pcre2(patterns)?;
Ok(PatternMatcher::PCRE2(matcher))
+ } else if self.is_present("auto-hybrid-regex") {
+ let rust_err = match self.matcher_rust(patterns) {
+ Ok(matcher) => return Ok(PatternMatcher::RustRegex(matcher)),
+ Err(err) => err,
+ };
+ log::debug!(
+ "error building Rust regex in hybrid mode:\n{}", rust_err,
+ );
+ let pcre_err = match self.matcher_pcre2(patterns) {
+ Ok(matcher) => return Ok(PatternMatcher::PCRE2(matcher)),
+ Err(err) => err,
+ };
+ Err(From::from(format!(
+ "regex could not be compiled with either the default regex \
+ engine or with PCRE2.\n\n\
+ default regex engine error:\n{}\n{}\n{}\n\n\
+ PCRE2 regex engine error:\n{}",
+ "~".repeat(79), rust_err, "~".repeat(79), pcre_err,
+ )))
} else {
let matcher = match self.matcher_rust(patterns) {
Ok(matcher) => matcher,