> Some say that you can end up using unsafe a lot and so it’s better to stick with C or even use Zig
Using unsafe in Rust isn't inherently bad. If you're doing embedded work, using unsafe is mandatory once you get to the level of interacting with the hardware.
That doesn't mean the code is literally unsafe, just that the interactions are happening in a way that the compiler can't guarantee. That's completely expected when you're poking at hardware registers.
You still get most of the benefits of Rust, the language. I've had good success with it.
> it's just that using unsafe reduces the benefits you get from Rust's model.
No, you still get the benefits where it matters.
The "unsafe" is basically marking a boundary where you're doing things outside of what the compiler can verify. If you're poking at hardware registers, that's expected and normal.
Putting "unsafe" in a program at the hardware boundary doesn't reduce the benefits of Rust elsewhere in the program.
I will add the resulting compression sizes- there is not much between them (pzip was around 2% larger for the 10GB directory). Although, I do have some optimizations in mind which will bring this down further.
Allowing for 2% bigger resulting file could mean huge speedup in these circumstances even with the same compression routines, seeing these benchmarks of zlib and zlib-ng for different compression levels:
I would start off with catering to the people that already are well into advanced territory, beginners can learn from them by just reading and lurking. Starting off with beginner stuff will turn off the people that are way past that. Aiming for the right audience to start with is a major challenge in any kind of community, in my opinion you can't aim high enough for the starting few 100.
[1] https://github.com/ybirader/pzip
Disclaimer: I’m the author