pub fn remove(&mut self, offset: usize) -> u8 {
        let val = self.content_buf[offset];

        unsafe {
            std::ptr::copy(
                self.content_buf.as_ptr().add(offset + 1),
                self.content_buf.as_mut_ptr().add(offset),
                self.window_end.fetch_sub(1, Ordering::SeqCst) - offset,
            );
        }

        self.tx.send(EditMessage::Remove).unwrap();
        self.len -= 1;

        val
    }
Removes the value, and then copies the rest of the buffer 1 previous
up to the offset of the internal window. After this, it has the background
thread process the rest.
src/buffer.rs