@@ -176,11 +176,11 @@ impl Part {
176176}
177177
178178// Ref: https://wicg.github.io/urlpattern/#pattern-parser
179- struct PatternParser < F >
179+ struct PatternParser < ' a , F >
180180where
181181 F : Fn ( & str ) -> Result < String , Error > ,
182182{
183- token_list : Vec < Token > ,
183+ token_list : Vec < Token < ' a > > ,
184184 encoding_callback : F ,
185185 segment_wildcard_regexp : String ,
186186 part_list : Vec < Part > ,
@@ -189,12 +189,12 @@ where
189189 next_numeric_name : usize ,
190190}
191191
192- impl < F > PatternParser < F >
192+ impl < ' a , F > PatternParser < ' a , F >
193193where
194194 F : Fn ( & str ) -> Result < String , Error > ,
195195{
196196 // Ref: https://wicg.github.io/urlpattern/#try-to-consume-a-token
197- fn try_consume_token ( & mut self , kind : TokenType ) -> Option < Token > {
197+ fn try_consume_token ( & mut self , kind : TokenType ) -> Option < Token < ' a > > {
198198 assert ! ( self . index < self . token_list. len( ) ) ;
199199 let next_token = self . token_list [ self . index ] . clone ( ) ;
200200 if next_token. kind != kind {
@@ -210,7 +210,7 @@ where
210210 fn try_consume_regexp_or_wildcard_token (
211211 & mut self ,
212212 name_token_is_none : bool ,
213- ) -> Option < Token > {
213+ ) -> Option < Token < ' a > > {
214214 let token = self . try_consume_token ( TokenType :: Regexp ) ;
215215 if name_token_is_none && token. is_none ( ) {
216216 self . try_consume_token ( TokenType :: Asterisk )
@@ -221,7 +221,7 @@ where
221221
222222 // Ref: https://wicg.github.io/urlpattern/#try-to-consume-a-modifier-token
223223 #[ inline]
224- fn try_consume_modifier_token ( & mut self ) -> Option < Token > {
224+ fn try_consume_modifier_token ( & mut self ) -> Option < Token < ' a > > {
225225 self
226226 . try_consume_token ( TokenType :: OtherModifier )
227227 . or_else ( || self . try_consume_token ( TokenType :: Asterisk ) )
@@ -255,7 +255,7 @@ where
255255 ) -> Result < ( ) , Error > {
256256 let mut modifier = PartModifier :: None ;
257257 if let Some ( modifier_token) = modifier_token {
258- modifier = match modifier_token. value . as_ref ( ) {
258+ modifier = match modifier_token. value {
259259 "?" => PartModifier :: Optional ,
260260 "*" => PartModifier :: ZeroOrMore ,
261261 "+" => PartModifier :: OneOrMore ,
@@ -306,7 +306,7 @@ where
306306
307307 let mut name = String :: new ( ) ;
308308 if let Some ( name_token) = name_token {
309- name = name_token. value ;
309+ name = name_token. value . to_owned ( ) ;
310310 } else if regexp_or_wildcard_token. is_some ( ) {
311311 name = self . next_numeric_name . to_string ( ) ;
312312 self . next_numeric_name += 1 ;
@@ -344,7 +344,7 @@ where
344344 if token. is_none ( ) {
345345 break ;
346346 }
347- result. push_str ( & token. unwrap ( ) . value ) ;
347+ result. push_str ( token. unwrap ( ) . value ) ;
348348 }
349349 result
350350 }
@@ -359,7 +359,7 @@ where
359359 Error :: Parser ( ParserError :: ExpectedToken (
360360 kind,
361361 self . token_list [ self . index ] . kind . clone ( ) ,
362- self . token_list [ self . index ] . value . clone ( ) ,
362+ self . token_list [ self . index ] . value . to_owned ( ) ,
363363 ) )
364364 } )
365365 }
@@ -419,7 +419,7 @@ where
419419 fixed_token = parser. try_consume_token ( TokenType :: EscapedChar ) ;
420420 }
421421 if let Some ( fixed_token) = fixed_token {
422- parser. pending_fixed_value . push_str ( & fixed_token. value ) ;
422+ parser. pending_fixed_value . push_str ( fixed_token. value ) ;
423423 continue ;
424424 }
425425 let open_token = parser. try_consume_token ( TokenType :: Open ) ;
0 commit comments