1+ use zpm_utils:: EcoVec ;
2+
13use super :: { range:: { OperatorType , Token , TokenType } , version:: VersionRc , Version } ;
24use crate :: {
35 MAX_SAFE_COMPONENT_LENGTH ,
@@ -73,11 +75,11 @@ pub fn extract_rc_segment(str: &mut std::iter::Peekable<std::str::Chars>) -> Opt
7375
7476 * str = curr;
7577
76- Some ( VersionRc :: String ( extract_alnum_hyphen ( str) ?) )
78+ Some ( VersionRc :: String ( extract_alnum_hyphen ( str) ?. into ( ) ) )
7779}
7880
79- pub fn extract_rc ( str : & mut std:: iter:: Peekable < std:: str:: Chars > ) -> Option < Vec < VersionRc > > {
80- let mut segments = vec ! [ ] ;
81+ pub fn extract_rc ( str : & mut std:: iter:: Peekable < std:: str:: Chars > ) -> Option < EcoVec < VersionRc > > {
82+ let mut segments = EcoVec :: new ( ) ;
8183
8284 segments. push ( extract_rc_segment ( str) ?) ;
8385
@@ -145,7 +147,7 @@ pub fn extract_version(str: &mut std::iter::Peekable<std::str::Chars>) -> Option
145147 Some ( ( Version :: new_from_components ( major, minor, patch, rc) , missing) )
146148}
147149
148- pub fn extract_predicate ( str : & mut std:: iter:: Peekable < std:: str:: Chars > ) -> Option < Vec < Token > > {
150+ pub fn extract_predicate ( str : & mut std:: iter:: Peekable < std:: str:: Chars > ) -> Option < EcoVec < Token > > {
149151 if let Some ( c) = str. peek ( ) {
150152 match c {
151153 '^' => {
@@ -162,7 +164,7 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
162164 _ => version. next_major_rc ( ) ,
163165 } ;
164166
165- Some ( vec ! [
167+ Some ( EcoVec :: from ( [
166168 Token :: Operation (
167169 OperatorType :: GreaterThanOrEqual ,
168170 version,
@@ -172,7 +174,7 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
172174 OperatorType :: LessThan ,
173175 upper_bound,
174176 ) ,
175- ] )
177+ ] ) )
176178 } else {
177179 None
178180 }
@@ -189,7 +191,7 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
189191 let next_minor
190192 = version. next_minor_rc ( ) ;
191193
192- Some ( vec ! [
194+ Some ( EcoVec :: from ( [
193195 Token :: Operation (
194196 OperatorType :: GreaterThanOrEqual ,
195197 version,
@@ -199,7 +201,7 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
199201 OperatorType :: LessThan ,
200202 next_minor,
201203 ) ,
202- ] )
204+ ] ) )
203205 } else {
204206 None
205207 }
@@ -218,10 +220,10 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
218220 }
219221
220222 if let Some ( ( version, _) ) = extract_version ( str) {
221- Some ( vec ! [ Token :: Operation (
223+ Some ( EcoVec :: from ( [ Token :: Operation (
222224 operator,
223225 version,
224- ) ] )
226+ ) ] ) )
225227 } else {
226228 None
227229 }
@@ -240,10 +242,10 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
240242 }
241243
242244 if let Some ( ( version, _) ) = extract_version ( str) {
243- Some ( vec ! [ Token :: Operation (
245+ Some ( EcoVec :: from ( [ Token :: Operation (
244246 operator,
245247 version,
246- ) ] )
248+ ) ] ) )
247249 } else {
248250 None
249251 }
@@ -258,10 +260,10 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
258260 }
259261
260262 if let Some ( ( version, _) ) = extract_version ( str) {
261- Some ( vec ! [ Token :: Operation (
263+ Some ( EcoVec :: from ( [ Token :: Operation (
262264 OperatorType :: Equal ,
263265 version,
264- ) ] )
266+ ) ] ) )
265267 } else {
266268 None
267269 }
@@ -280,7 +282,7 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
280282 }
281283
282284 return extract_version ( str) . map ( |( other_version, _) | {
283- vec ! [
285+ EcoVec :: from ( [
284286 Token :: Operation (
285287 OperatorType :: GreaterThanOrEqual ,
286288 version,
@@ -290,25 +292,25 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
290292 OperatorType :: LessThan ,
291293 other_version,
292294 ) ,
293- ]
295+ ] )
294296 } )
295297 }
296298 }
297299
298300 match missing {
299301 3 => {
300- Some ( vec ! [
302+ Some ( EcoVec :: from ( [
301303 Token :: Operation (
302304 OperatorType :: GreaterThanOrEqual ,
303305 version,
304306 ) ,
305- ] )
307+ ] ) )
306308 }
307309
308310 2 => {
309311 let next_major = version. next_major ( ) ;
310312
311- Some ( vec ! [
313+ Some ( EcoVec :: from ( [
312314 Token :: Operation (
313315 OperatorType :: GreaterThanOrEqual ,
314316 version,
@@ -318,13 +320,13 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
318320 OperatorType :: LessThan ,
319321 next_major,
320322 ) ,
321- ] )
323+ ] ) )
322324 }
323325
324326 1 => {
325327 let next_minor = version. next_minor ( ) ;
326328
327- Some ( vec ! [
329+ Some ( EcoVec :: from ( [
328330 Token :: Operation (
329331 OperatorType :: GreaterThanOrEqual ,
330332 version,
@@ -334,14 +336,14 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
334336 OperatorType :: LessThan ,
335337 next_minor,
336338 ) ,
337- ] )
339+ ] ) )
338340 }
339341
340342 0 => {
341- Some ( vec ! [ Token :: Operation (
343+ Some ( EcoVec :: from ( [ Token :: Operation (
342344 OperatorType :: Equal ,
343345 version,
344- ) ] )
346+ ) ] ) )
345347 }
346348
347349 _ => {
@@ -358,8 +360,8 @@ pub fn extract_predicate(str: &mut std::iter::Peekable<std::str::Chars>) -> Opti
358360 }
359361}
360362
361- pub fn extract_tokens ( str : & mut std:: iter:: Peekable < std:: str:: Chars > ) -> Option < Vec < Token > > {
362- let mut tokens = Vec :: new ( ) ;
363+ pub fn extract_tokens ( str : & mut std:: iter:: Peekable < std:: str:: Chars > ) -> Option < EcoVec < Token > > {
364+ let mut tokens = EcoVec :: new ( ) ;
363365
364366 while let Some ( c) = str. peek ( ) {
365367 match c {
@@ -405,7 +407,7 @@ pub fn extract_tokens(str: &mut std::iter::Peekable<std::str::Chars>) -> Option<
405407 tokens. push ( Token :: Syntax ( TokenType :: SAnd ) ) ;
406408 }
407409
408- tokens. extend ( predicate) ;
410+ tokens. extend ( predicate. into_iter ( ) ) ;
409411 } else {
410412 return None ;
411413 }
@@ -416,7 +418,7 @@ pub fn extract_tokens(str: &mut std::iter::Peekable<std::str::Chars>) -> Option<
416418 Some ( tokens)
417419}
418420
419- pub fn infix_to_prefix ( input : & [ Token ] ) -> Option < Vec < Token > > {
421+ pub fn infix_to_prefix ( input : & [ Token ] ) -> Option < EcoVec < Token > > {
420422 let mut prefix = vec ! [ ] ;
421423 let mut stack = vec ! [ ] ;
422424
@@ -458,5 +460,5 @@ pub fn infix_to_prefix(input: &[Token]) -> Option<Vec<Token>> {
458460
459461 prefix. reverse ( ) ;
460462
461- Some ( prefix)
463+ Some ( EcoVec :: from ( prefix) )
462464}
0 commit comments