Генерация типов в зиге (язык зиг)

Можно ли создать comptimeфункция в zig, которая создаст новый тип структуры? Функция получит массив строк и массив типов. Строки - это имена последующих полей структуры.

1 ответ

Решение

Нет. Это уже давно предлагается на https://github.com/ziglang/zig/issues/383.

Теперь это реализовано как https://github.com/ziglang/zig/pull/6099.

const builtin = @import("std").builtin;
const A = @Type(.{
    .Struct = .{
        .layout = .Auto,
        .fields = &[_]builtin.TypeInfo.StructField{
            .{ .name = "one", .field_type = i32, .default_value = null, .is_comptime = false },
        },
        .decls = &[_]builtin.TypeInfo.Declaration{},
        .is_tuple = false,
    },
});
test "" {
    const a: A = .{ .one = 25 };
}
Другие вопросы по тегам