These would be better written without the `~` sigil (i.e. just a static string, there's no need to *always* allocate them), and then the `val.map_or` below can/should be:

```rust
match val {
    Some(n) => format!("{}{}", n, s),
    None => s.to_owned()
}
```
which avoids compulsarily allocating the `~""`, and doesn't allocate the temporary string for the `v.to_str()` call,