If you cram an `assumeSafeAppend` in here, eg:
```D
return () @trusted {return cast(U)(assumeSafeAppend(utf[0 .. pos]));}();
```

Then the user will also be able to append to the returned array (for example, to add an extension), without relocating.

It's not nothrow right now, but there's an open pull for that.