This is mostly helpful to check/debug whether the internal dictionary
actually contains the expected data. For manually looking through the
entire dictionary, opening the CSV file is still more convenient.
The compiler doesn't complain about this, so I assumed it
was able to correctly resolve a conversion
`BundleFileType` -> `Murmur64` via their shared `From` impl: `u64`.
But it appears that is not the case, and the simple `t.into()` just
calls itself. So I need to do the conversion via the intermediary value
manually.
Clippy's suggestion failed me, as `slice::take` only yields _at most_
the given number of elements, but `Vec::with_capacity` doesn't resize
in a way that it would yield `capacity` elements.
There is no benefit from making all operations on binary data read
in small, async steps directly from the file.
Since we know file sizes beforehand, it's less complex to read
the entire data blob into memory once, then operate on that
synchronously.
`csv_async`'s deserializer seems to only emit a few specific types
to the supplied visitor. Namely strings and 64 bit numbers. I was
not able to figure out why some numbers where considered floats.
So each visitor for the hash types needs to implement all of those
data types and convert them, if necessary.
Since I now found a way to obtain a version of the Oodle library
compiled for Linux, I don't need to bother with Wine anymore, and
can instead load the library directly.
This removes the need for the extra utility completely.
I still have to load the library at runtime, though, as Rust only
supports static linking, and I probably don't have a lincense to do
that with Oodle.