So I've been writing an allocator. A difficult task and in Rust it is currently a dream to write.
The patterns I'm on about are small quick scopes to get a mutable reference and store or read data.
pub fn some_func(&mut self, s: &[u8]) {
// Mutable borrow 1 and write
{
let writable = &mut self.buf[..8];
writable[..8].copy_from_slice();
}
// Mutable borrow 2 and write
{
let writable = &mut self.buf[8..16];
writable[8..16].copy_from_slice();
}
// And so on . . .
}
No other language feels like this. No other language is so precise on reads and writes always taking a length or the length can be obtained from the type (such as a slice).
Writing to different parts of a buffer and selecting parts of like this feels amazing. For writing an allocator i can just make array's and then write any bytes to them and just read them back and cast them about.
So much better than just using raw pointers, and safer as sizes are usually know with slices.
Anyway i just love Rust and this was an excuse to share my love of Rust <3
Do you mean a global allocator?
Yes a Global Allocator to be used with the GlobalAlloc trait