Clear the clippy warnings that were failing CI before this branch
🐳 Android image / Build and push (push) Successful in 1s
Build and test / android-image (push) Successful in 1s
Build and test / Desktop (Linux) (push) Failing after 9m6s
Build and test / Layer separation (push) Successful in 26s
Traceability / Requirement traces (push) Failing after 23s
Build and test / Android (aarch64) (push) Failing after 22m38s
🐳 Android image / Build and push (push) Successful in 1s
Build and test / android-image (push) Successful in 1s
Build and test / Desktop (Linux) (push) Failing after 9m6s
Build and test / Layer separation (push) Successful in 26s
Traceability / Requirement traces (push) Failing after 23s
Build and test / Android (aarch64) (push) Failing after 22m38s
Nothing here is film simulation. These are lints that fail master today,
under the -D warnings CI runs with, mostly from a toolchain that learned
new ones rather than from anybody's code -- `is_multiple_of` and the
derivable `Default` did not exist as lints when this was written.
They are fixed rather than allowed, and by hand rather than by trusting
`cargo clippy --fix` wholesale: its automatic pass split a derive in two
and left a stray blank line, which is the sort of thing that is correct
and still wrong to commit.
The four that needed a decision rather than a rewrite:
- The distance transform's inner loop writes through its iterator now.
`q` stays, because it is the position the parabola is evaluated at as
well as the index it is written to -- the lint is about the write.
- `to_source` and `to_proto` take `self` by value. Their receiver is
`Copy`, so this is the same machine code and the honest signature.
- The export path's return type is five levels deep and now has a name,
plus a line saying why the `Option` wraps the `Result`: `None` is
cancellation, which is not a failure and has no error to report.
- A test fills a range instead of looping over one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -183,12 +183,15 @@ fn transform(f: &[f32], out: &mut [f32], v: &mut [usize], z: &mut [f32]) {
|
||||
}
|
||||
|
||||
k = 0;
|
||||
for q in 0..n {
|
||||
// `q` is both the position and the value the parabola is evaluated at, so
|
||||
// it stays; what changes is that the write goes through the iterator
|
||||
// rather than re-indexing `out` on every step.
|
||||
for (q, slot) in out.iter_mut().enumerate().take(n) {
|
||||
while z[k + 1] < q as f32 {
|
||||
k += 1;
|
||||
}
|
||||
let p = v[k];
|
||||
out[q] = (q as f32 - p as f32).powi(2) + f[p];
|
||||
*slot = (q as f32 - p as f32).powi(2) + f[p];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -414,13 +417,13 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn an_empty_mask_is_everywhere_outside() {
|
||||
let d = signed_distance(&vec![0u8; 16], 4, 4, 128);
|
||||
let d = signed_distance(&[0u8; 16], 4, 4, 128);
|
||||
assert!(d.iter().all(|&v| v < 0.0), "no pixel can be inside");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_full_mask_is_everywhere_inside() {
|
||||
let d = signed_distance(&vec![255u8; 16], 4, 4, 128);
|
||||
let d = signed_distance(&[255u8; 16], 4, 4, 128);
|
||||
assert!(d.iter().all(|&v| v > 0.0), "no pixel can be outside");
|
||||
}
|
||||
|
||||
@@ -548,9 +551,7 @@ mod tests {
|
||||
// M5: masks reach the sidecar as indices, so the field they are shaped
|
||||
// by has to be reproducible.
|
||||
let mut m = vec![0u8; 64];
|
||||
for i in 20..30 {
|
||||
m[i] = 255;
|
||||
}
|
||||
m[20..30].fill(255);
|
||||
let a = signed_distance(&m, 8, 8, 128);
|
||||
let b = signed_distance(&m, 8, 8, 128);
|
||||
assert_eq!(a, b);
|
||||
|
||||
Reference in New Issue
Block a user