↗ agatan blog ↗

Zig Snippets: string to enum

8/31/2022 公開

zig

Zig で []const u8 から enum に変換する

たぶん builtin にも存在しない気がする?のですが、逆 (enum → string) は @tagName で可能なので、 @typeInfoinline for をくみあわせて以下のように書くことができます。

const std = @import("std");

const E = enum { a, b };

fn strToE(s: []const u8) ?E {
    inline for (@typeInfo(E).Enum.fields) |f| {
        if (std.mem.eql(u8, f.name, s)) {
            return @intToEnum(@This(), f.value);
        }
    }
    return null;
}

inline for 便利。


GitHub で編集リクエスト

    このサイトはGoogle Analyticsを使用しています。

    詳しく見る

agatan

@agatan

    このサイトはGoogle Analyticsを使用しています。

    詳しく見る