Parses a version string into (major, minor, patch, pre-release).
(v: &str)
| 244 | pub fn is_newer_version(current: &str, latest: &str) -> bool { |
| 245 | /// Parses a version string into (major, minor, patch, pre-release). |
| 246 | fn parse(v: &str) -> Option<(u64, u64, u64, Option<&str>)> { |
| 247 | let (base, pre) = match v.split_once('-') { |
| 248 | Some((b, p)) => (b, Some(p)), |
| 249 | None => (v, None), |
| 250 | }; |
| 251 | let mut parts = base.split('.'); |
| 252 | let major = parts.next()?.parse().ok()?; |
| 253 | let minor = parts.next()?.parse().ok()?; |
| 254 | let patch = parts.next()?.parse().ok()?; |
| 255 | Some((major, minor, patch, pre)) |
| 256 | } |
| 257 | |
| 258 | match (parse(current), parse(latest)) { |
| 259 | (Some((cm, cn, cp, cpre)), Some((lm, ln, lp, lpre))) => { |
no test coverage detected