- this is the rust version that debian stable (buster) currently has, so that's nice
- now we can use `const fn`s in more places, hooray
- smartstring is no longer outdated, hooray
- bitflags is no longer outdated, hooray
- mime_type in files.rs is now a bit smarter about not reading more than it has to, hooray
- removed some redundant clippy lints, hooray
- added a teensy smidgen more documentation, hooray
this alone warrants a bump to 0.4.0 imo, and now that i think about it, there's not really much keeping me from calling it 1.0...
i think i'd want to get more tests, and maybe upgrade to clap 3 stable when that happens, before calling it 1.0, though. maybe even get some sort of configuration file...
using `buf.starts_with(b"\xAB\xCD")` instead of `buf[0] == 0xAB && buf[1] == 0xCD` is shorter, easier to read, removes the need for the `buf.len() > xyz` check, and actually compiles to (much) less assembly:
https://godbolt.org/z/M7GePGn1T
isn't that just lovely
`-j`/`--jobs` can be used to manually set the number of threads to use for scanning files. additionally, fif won't bother with multi-threaded scanning when there are less than 32 files to scan.
i benchmarked it with hyperfine and in terms of performance it's pretty much identical, with a slight (fraction of a percent) advantage to my implementation
by setting `group_imports = "StdExternalCrate"` in `rustfmt.toml`, cargo fmt/rustfmt rearranges your use statements into three groups:
- std/core/alloc,
- followed by external crates,
- followed by self/super/crate