pub fn find_latest_stable(versions: &[Box<dyn Version>]) -> Option<&dyn Version>Expand description
Finds the latest stable version from a list of versions.
Returns the first version that is:
- Not yanked/deprecated
- Not a pre-release (alpha, beta, rc, etc.)
Assumes versions are sorted newest-first (as returned by registries).
ยงExamples
use deps_core::registry::{Version, find_latest_stable};
use std::any::Any;
struct MyVersion { version: String, yanked: bool }
impl Version for MyVersion {
fn version_string(&self) -> &str { &self.version }
fn is_yanked(&self) -> bool { self.yanked }
fn as_any(&self) -> &dyn Any { self }
}
let versions: Vec<Box<dyn Version>> = vec![
Box::new(MyVersion { version: "2.0.0-alpha.1".into(), yanked: false }),
Box::new(MyVersion { version: "1.5.0".into(), yanked: true }),
Box::new(MyVersion { version: "1.4.0".into(), yanked: false }),
];
let latest = find_latest_stable(&versions);
assert_eq!(latest.map(|v| v.version_string()), Some("1.4.0"));