Can this avoid unsafe code and use:

```rust
let mut buf = ...;
vec::bytes::copy_memory(buf, self.as_bytes());
buf[self.len()] = 0;
do buf.as_imm_buf |buf, _| {
  // etc
}
```
?