Is this code normal? Why can't it be marked with `@safe`? Can
only `idup` be used for `@safe` in such cases?
```d
string fn() @trusted pure {
char[] arr;
// some manipulations...
return cast(string) arr;
}
```
Where is the line between cases where the `@trusted` tag can be
used and cases where the `@system` tag can be used?