Можно ли в protobuf ограничить ключ карты определенными значениями?

Таким образом, protobuf не позволяет перечислениям строк быть ключами на карте Я хочу ограничить карту только ключами a, b или c. Я работаю в Kotlin и могу использовать валидаторы, такие как [(validate.rules).string = {pattern: "^a|b|c$"}]

message payload {
  map<desired_constrained_key_here, string> my_map = 1;
}

Можно ли это сделать? Как я могу это сделать? Я не вижу этого в документации по protobuf.

Всего 1 ответ


Нет, это невозможно; нет синтаксиса, чтобы выразить это, и нет принудительного исполнения в любой реализации.

Однако следующее возможно и гораздо более эффективно , но требует другого использования:

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

Это, в конечном счете, еще один способ представления карты между тремя дополнительными ключами a, b, c и значениями string для каждого.


Есть идеи?

10000