From 191a3e2d48e153492e1480166a8511d0563c957c Mon Sep 17 00:00:00 2001 From: John Turner Date: Sun, 26 Oct 2025 21:35:36 -0400 Subject: take reference to regex struct in Regex parser --- src/lib.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 41a914c..3454e96 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1006,15 +1006,15 @@ pub mod str { use super::*; - struct Regex(regex::Regex); + struct Regex<'a>(&'a regex::Regex); - impl<'a> Parser<&'a str> for Regex { - type Output = &'a str; + impl<'src, 'regex> Parser<&'src str> for Regex<'regex> { + type Output = &'src str; - fn run>( + fn run>( &self, - it: InputIter<&'a str>, - ) -> ParserResult<&'a str, Self::Output, OM, EM> { + it: InputIter<&'src str>, + ) -> ParserResult<&'src str, Self::Output, OM, EM> { match self.0.find(it.rest()) { Some(m) => { let output = OM::bind(|| it.rest().slice(m.range())); @@ -1026,7 +1026,7 @@ pub mod str { } } - pub fn regex<'a>(regexp: regex::Regex) -> impl Parser<&'a str, Output = &'a str> { + pub fn regex<'a>(regexp: &'a regex::Regex) -> impl Parser<&'a str, Output = &'a str> { Regex(regexp) } } @@ -1050,7 +1050,7 @@ mod test { fn test_regex_parser() { let it = InputIter::new("abc 123"); - match crate::str::regex(regex::Regex::new("[a-z]+").unwrap()).parse(it) { + match crate::str::regex(®ex::Regex::new("[a-z]+").unwrap()).parse(it) { Ok((rest, output)) => { assert_eq!(output, "abc"); assert_eq!(rest.rest(), " 123"); -- cgit v1.2.3