我有以下 zig 代码(简化):
const allocator = ...;
const Entry = struct {
name: []u8,
};
fn list() ![]u8 {
var entries = try std.json.parse([]Entry, ...);
defer std.json.parseFree([]Entry, entries, ...);
return entries[0];
}
fn main() !void {
const e = try list();
...
}
一切都(取消)分配allocator
。
我想退回entries[0]
并回收其他所有东西。问题是parseFree
这里回收了所有东西,包括entries[0]
所以我似乎无法使用这个功能。
那么在不复制的情况下,最有效的方法是什么?如果Entry
是一个大结构并且我只想返回一个它的字段,比如说Entry.name
(并且再次回收其他所有内容)怎么办?