Alternative containers

Modify-in-place

If you solved the puzzle using a Vec buffer you can try solving it without the buffer as a stretch goal. You may find the slice methods that let you mutate a Packet's data useful, but remember that the first six bytes of your Packet will be the random device address - you can't decrypt those!

Using heapless::FnvIndexMap

The heapless::LinearMap performs lookup via linear search, which can be slow for a large number of keys. The FNV Index Map can be used as a drop-in replacement which performs hashing and thus has a fast lookup similar to the containers provided by the standard library.

Using liballoc::BTreeMap

If you solved the puzzle using a heapless::Vec buffer and a heapless::LinearMap and you still need something else to try, you could look at the Vec and BTreeMap types contained within liballoc. This will require you to set up a global memory allocator, like embedded-alloc.