在 protobuf 中,我可以将地图的键限制为某些值吗?

In protobuf can I constrain a map's key to certain values?

因此 protobuf 不允许字符串枚举作为映射中的键 我想将地图限制为只有键 a、b 或 c。 我在 Kotlin 工作,可以使用像 [(validate.rules).string = {pattern: "^a|b|c$"}]

这样的验证器
message payload {
  map<desired_constrained_key_here, string> my_map = 1;
}

这能做到吗? 我该怎么做? 我在 protobuf 文档中没有看到这个。

不,那不可能;没有语法来表达这一点,也没有在任何实施中强制执行。

然而,以下是可能的并且效率更高,但需要不同的用法:

message payload {
  string a = 1;
  string b = 2;
  string c = 3;
}

最终,这是表示 3 个可选键 abc 和每个键的 string 值之间映射的另一种方式。