80 findings, not the 14 the first run showed -- clippy stops at the first failing compilation unit, so `--keep-going` is what makes the list complete. 60 were machine-applicable (`cargo clippy --fix`). The rest by hand: * five descending `sort_by` -> `sort_by_key(Reverse(..))` * `chunks_exact(4)` on both sides of four zips, so the compared items stay `[u8; 4]` rather than one array against one slice * three `type` aliases for the census maps and the captured-quad tuple * `&PathBuf` -> `&Path` in two disc tests * two range loops; one of them keeps `#[allow(needless_range_loop)]` with the reason -- the index is into a map's value, which changes each iteration * the module doc list in `invert_capture` re-indented to markdown's rules * `blit`'s eight arguments get `#[allow(too_many_arguments)]`, not a struct One dead `let off = b.len();` in a `ratc` test is dropped rather than renamed. The sibling test at :162 is the one that asserts an offset; if this one was meant to as well, that is a test change and not a lint fix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
38 lines
1.4 KiB
Rust
38 lines
1.4 KiB
Rust
//! Raw token sequence around a key, for one record — the ground truth for
|
|
//! "is this field actually defaulted, or is our reader missing it?"
|
|
//! Run: pool_window <disc-root> <ID substring> <key>
|
|
use sylpheed_formats::idxd::IdxdObject;
|
|
use sylpheed_formats::pak::PakArchive;
|
|
fn main() {
|
|
let disc = std::env::args().nth(1).unwrap();
|
|
let want = std::env::args().nth(2).unwrap();
|
|
let key = std::env::args().nth(3).unwrap();
|
|
let pak = PakArchive::open(format!("{disc}/dat/GP_MAIN_GAME_E.pak")).unwrap();
|
|
for e in pak.entries() {
|
|
let Ok(b) = pak.read(e) else { continue };
|
|
let Ok(o) = IdxdObject::parse(&b) else {
|
|
continue;
|
|
};
|
|
let Some(id) = o.get_raw("ID") else { continue };
|
|
if !id.contains(&want) {
|
|
continue;
|
|
}
|
|
let t = o.tokens();
|
|
println!("=== {id} get_f32({key}) = {:?}", o.get_f32(&key));
|
|
for (i, tok) in t.iter().enumerate() {
|
|
if tok == &key {
|
|
let lo = i.saturating_sub(6);
|
|
let hi = (i + 7).min(t.len());
|
|
for (j, tok_j) in t.iter().enumerate().skip(lo).take(hi - lo) {
|
|
println!(
|
|
" [{j}]{} {:?}",
|
|
if j == i { " <-- key" } else { " " },
|
|
tok_j
|
|
);
|
|
}
|
|
println!();
|
|
}
|
|
}
|
|
}
|
|
}
|