pub fn put(&self, key: &[u8], value: &[u8]) -> Result<()> {
        let estimated_size = key.len() + value.len();
        self.map
            .insert(Bytes::copy_from_slice(key), Bytes::copy_from_slice(value));
        self.approximate_size
            .fetch_add(estimated_size, std::sync::atomic::Ordering::Relaxed);
        if let Some(ref wal) = self.wal {
            wal.put(key, value)?;
        }
        Ok(())
    }
Put a key-value pair into the mem-table.

In week 1, day 1, simply put the key-value pair into the skipmap.
In week 2, day 6, also flush the data to WAL.
In week 3, day 5, modify the function to use the batch API.
mini-lsm/src/mem_table.rs