std.array.Appender needs a way to extend/add to the length of `data`. See the following use case:
```
uint tryAppendFullPathNameImpl(const(wchar)* nullTerminatedPath, Appender!(wchar[]) builder)
{
import core.sys.windows.winbase : GetFullPathNameW;
auto prefixLength = builder.data.length;
for (;;)
{
const result = GetFullPathNameW(nullTerminatedPath, builder.capacity - prefixLength,
builder.data.ptr + prefixLength, null);
if (result <= (builder.capacity - prefixLength))
{
// NO WAY TO DO THIS:
//builder.overrideDataLength(prefixLength + result);
return result;
}
builder.reserve(prefixLength + result);
}
}
```
What's happening here is we are passing the Appender array to a C function that populates the array with our resuling "full path". Note that this implementation is taken from .NET CoreFX:
https://github.com/dotnet/corefx/blob/1bff7880bfa949e8c5e46039808ec412640bbb5e/src/Common/src/CoreLib/System/IO/PathHelper.Windows.cs#L72
The problem is that once it's populated, we have no way of extending the length of the array after it was populated by the C function.