@@ -111,13 +111,17 @@ impl OptVersionReq {
111
111
}
112
112
}
113
113
114
- /// Since Semver does not support prerelease versions,
115
- /// the simplest implementation is taken here without comparing the prerelease section.
116
- /// The logic here is temporary, we'll have to consider more boundary conditions later,
117
- /// and we're not sure if this part of the functionality should be implemented in semver or cargo.
114
+ /// An interim approach allows to update to SemVer-Compatible prerelease version.
118
115
pub fn matches_prerelease ( & self , version : & Version ) -> bool {
116
+ // Others Non `OptVersionReq::Req` have their own implementation.
117
+ if !matches ! ( self , OptVersionReq :: Req ( _) ) {
118
+ return self . matches ( version) ;
119
+ }
120
+
121
+ // TODO: In the future we have a prerelease semantic to be implemented.
119
122
if version. is_prerelease ( ) {
120
- let mut version = version. clone ( ) ;
123
+ let mut version: Version = version. clone ( ) ;
124
+ // Ignores the Prerelease tag to unlock the limit of non prerelease unpdate to prerelease.
121
125
version. pre = semver:: Prerelease :: EMPTY ;
122
126
return self . matches ( & version) ;
123
127
}
@@ -251,9 +255,9 @@ mod matches_prerelease {
251
255
assert ! ( req. matches_prerelease( & to_ver) ) ;
252
256
253
257
let req = OptVersionReq :: Locked ( to_ver. clone ( ) , req_ver. clone ( ) ) ;
254
- assert ! ( ! req. matches_prerelease( & to_ver) ) ;
258
+ assert ! ( req. matches_prerelease( & to_ver) ) ;
255
259
256
260
let req = OptVersionReq :: Precise ( to_ver. clone ( ) , req_ver. clone ( ) ) ;
257
- assert ! ( ! req. matches_prerelease( & to_ver) ) ;
261
+ assert ! ( req. matches_prerelease( & to_ver) ) ;
258
262
}
259
263
}
0 commit comments