@@ -41,20 +41,20 @@ impl VersionTag {
4141
4242 fn version(&self) -> &str {
4343 match self {
44− VersionTag::Manual(s) => &s,
45− VersionTag::Auto(s) => &s,
44+ VersionTag::Manual(s) => s,
45+ VersionTag::Auto(s) => s,
4646 }
4747 }
4848}
4949
5050pub fn outdated() {
5151 let mut all: Vec<String> = vec![];
52− let disabled = handle(false, |_loc, lines| {
52+ let versioned = handle(false, |_loc, lines| {
5353 all.extend(lines);
5454 vec![]
5555 });
5656 let mut map: BTreeMap<String, VersionTag> = BTreeMap::new();
57− for DisabledPackage { package, version } in disabled {
57+ for VersionedPackage { package, version } in versioned {
5858 map.insert(package, VersionTag::Manual(version));
5959 }
6060 let mut support: BTreeMap<(String, String), BTreeSet<(String, String)>> = BTreeMap::new();
@@ -107,7 +107,7 @@ pub fn outdated() {
107107 let latest = latest_version(&package);
108108 if version != latest {
109109 let max = 3;
110− let dependents_stripped = dependents.len().checked_sub(max).unwrap_or(0);
110+ let dependents_stripped = dependents.len().saturating_sub(max);
111111 let dependents = dependents
112112 .into_iter()
113113 .take(max)
@@ -177,34 +177,38 @@ enum State {
177177 Done,
178178}
179179
180−struct DisabledPackage {
180+struct VersionedPackage {
181181 package: String,
182182 version: String,
183183}
184184
185−fn parse_disabled_package(s: &str) -> Option<DisabledPackage> {
185+fn parse_versioned_package(s: &str) -> Option<VersionedPackage> {
186186 if let Some(caps) = regex!(r#"- *([^ ]+) < *0 *# *([\d.]+)"#).captures(s) {
187187 let package = caps.get(1).unwrap().as_str().to_owned();
188188 let version = caps.get(2).unwrap().as_str().to_owned();
189− Some(DisabledPackage { package, version })
189+ Some(VersionedPackage { package, version })
190+ } else if let Some(caps) = regex!(r#"- *([^ ]+) *# *([\d.]+)"#).captures(s) {
191+ let package = caps.get(1).unwrap().as_str().to_owned();
192+ let version = caps.get(2).unwrap().as_str().to_owned();
193+ Some(VersionedPackage { package, version })
190194 } else {
191195 None
192196 }
193197}
194198
195−fn handle<F>(write: bool, mut f: F) -> Vec<DisabledPackage>
199+fn handle<F>(write: bool, mut f: F) -> Vec<VersionedPackage>
196200where
197201 F: FnMut(Location, Vec<String>) -> Vec<String>,
198202{
199203 let path = "build-constraints.yaml";
200204 let mut new_lines: Vec<String> = vec![];
201− let mut disabled_packages: Vec<DisabledPackage> = vec![];
205+ let mut versioned_packages: Vec<VersionedPackage> = vec![];
202206
203207 let mut state = State::LookingForLibBounds;
204208 let mut buf = vec![];
205209 for line in read_lines(path).map(|s| s.unwrap()) {
206− if let Some(disabled_package) = parse_disabled_package(&line) {
207− disabled_packages.push(disabled_package);
210+ if let Some(versioned_package) = parse_versioned_package(&line) {
211+ versioned_packages.push(versioned_package);
208212 }
209213
210214 match state {
@@ -275,7 +279,7 @@ where
275279 file.flush().unwrap();
276280 }
277281
278− disabled_packages
282+ versioned_packages
279283}
280284
281285enum Location {