This `.fold` is actually O(n^2), because `+` doesn't reuse the allocation/data. It would be better as something like

```rust
let mut out = StrBuf::new();
for (f, v) in pairs {
    out.push_str(...)
}
```

(or even better with a memwriter of some sort, but that's probably premature optimisation.)