Sweep the pinned toolchain to Rust 1.97
The Windows UI needs current winsafe, whose real minimum is 1.89 (its manifest under-declares 1.87 while it uses NonNull::from_ref). Rather than stop at the minimum, this goes to current stable and fixes what that costs. The counter-intuitive result: 1.97 is CHEAPER than 1.89. libfreemkv had 54 clippy errors at 1.89 and 6 at 1.97, because clippy tightened the noisy collapsible_if lint in between. Stopping at the minimum would have been the most expensive choice available. Roughly 47 lints across the eight repos, the large majority auto-fixed: libfreemkv 6, freemkv-engine 14, bdemu 8, freemkv-keysources 7, autorip 6, freemkv-unlock 3, freemkv-i18n 3. The hand-fixed ones are a descending sort to sort_by_key(Reverse), four manual checked-division sites, a loop counter replaced by enumerate, and a loop whose first let-else became a while-let. Worth recording for whoever bumps next: clippy is MSRV-AWARE. Those 54 lints only appear once the crate DECLARES 1.89 or later, because let-chains become available. A bare `cargo +1.89 clippy` against a manifest still pinned at 1.87 reports clean and is meaningless — gate with the real precommit script, which is also the only thing that covers build scripts. The pin still sits below the Mac default, so it keeps doing its job: catching lint drift locally before CI sees it.
This commit is contained in:
+18
-17
@@ -165,13 +165,13 @@ impl Disc {
|
||||
.iter()
|
||||
.map(|p| p.size)
|
||||
.fold(0u64, |a, b| a.saturating_add(b));
|
||||
if let Some(available) = available_space(dest) {
|
||||
if available < required {
|
||||
return Err(Error::DirInsufficientSpace {
|
||||
required,
|
||||
available,
|
||||
});
|
||||
}
|
||||
if let Some(available) = available_space(dest)
|
||||
&& available < required
|
||||
{
|
||||
return Err(Error::DirInsufficientSpace {
|
||||
required,
|
||||
available,
|
||||
});
|
||||
}
|
||||
|
||||
// Create directories up-front so a leaf write never races a missing
|
||||
@@ -388,12 +388,12 @@ fn plan_tree(
|
||||
let child_rel = host_rel.join(&safe);
|
||||
let child_disc = format!("{disc_path}/{}", entry.name);
|
||||
// Collision: two distinct disc paths → same host path.
|
||||
if let Some(prev) = seen_hosts.insert(child_rel.clone(), child_disc.clone()) {
|
||||
if prev != child_disc {
|
||||
return Err(Error::DirNameCollision {
|
||||
host: child_rel.to_string_lossy().into_owned(),
|
||||
});
|
||||
}
|
||||
if let Some(prev) = seen_hosts.insert(child_rel.clone(), child_disc.clone())
|
||||
&& prev != child_disc
|
||||
{
|
||||
return Err(Error::DirNameCollision {
|
||||
host: child_rel.to_string_lossy().into_owned(),
|
||||
});
|
||||
}
|
||||
if entry.is_dir {
|
||||
dirs.push(child_rel.clone());
|
||||
@@ -756,10 +756,11 @@ fn is_windows_reserved(base: &str) -> bool {
|
||||
}
|
||||
let up = base.to_ascii_uppercase();
|
||||
for prefix in ["COM", "LPT"] {
|
||||
if let Some(rest) = up.strip_prefix(prefix) {
|
||||
if rest.len() == 1 && matches!(rest.as_bytes()[0], b'1'..=b'9') {
|
||||
return true;
|
||||
}
|
||||
if let Some(rest) = up.strip_prefix(prefix)
|
||||
&& rest.len() == 1
|
||||
&& matches!(rest.as_bytes()[0], b'1'..=b'9')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
false
|
||||
|
||||
Reference in New Issue
Block a user