@@ -315,27 +315,31 @@ impl Identifier {
315315}
316316
317317#[ derive( Clone , PartialEq , Eq ) ]
318- pub struct Range ( String ) ;
318+ pub struct Range {
319+ spec : String ,
320+ range : pubgrub:: range:: Range < Version > ,
321+ }
319322
320323impl Range {
321- pub fn new ( spec : String ) -> Self {
322- Self ( spec)
324+ pub fn new ( spec : String ) -> Result < Self , parser:: Error > {
325+ let range = Version :: parse_range ( spec. as_str ( ) ) ?;
326+ Ok ( Self { spec, range } )
323327 }
324328}
325329
326330impl Range {
327- pub fn to_pubgrub ( & self ) -> Result < pubgrub:: range:: Range < Version > , parser :: Error > {
328- Version :: parse_range ( & self . 0 )
331+ pub fn to_pubgrub ( & self ) -> & pubgrub:: range:: Range < Version > {
332+ & self . range
329333 }
330334
331335 pub fn as_str ( & self ) -> & str {
332- & self . 0
336+ & self . spec
333337 }
334338}
335339
336340impl fmt:: Debug for Range {
337341 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
338- f. debug_tuple ( "Range" ) . field ( & self . 0 . to_string ( ) ) . finish ( )
342+ f. debug_tuple ( "Range" ) . field ( & self . spec ) . finish ( )
339343 }
340344}
341345
@@ -345,7 +349,7 @@ impl<'de> Deserialize<'de> for Range {
345349 D : Deserializer < ' de > ,
346350 {
347351 let s: & str = Deserialize :: deserialize ( deserializer) ?;
348- Ok ( Range :: new ( s. to_string ( ) ) )
352+ Range :: new ( s. to_string ( ) ) . map_err ( serde :: de :: Error :: custom )
349353 }
350354}
351355
@@ -360,8 +364,7 @@ impl Serialize for Range {
360364
361365impl fmt:: Display for Range {
362366 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
363- write ! ( f, "{}" , self . 0 ) ?;
364- Ok ( ( ) )
367+ f. write_str ( & self . spec )
365368 }
366369}
367370
0 commit comments