Вы не можете под proto3. Лучше всего, вероятно, определить перечисление tri-bool с неопределенным значением в качестве первого элемента со значением ноль и некоторыми значениями true / false после этого.
Это потребует того же пробела , что и protobuf bool
, но не будет двоично-совместимым - поэтому вы не можете просто изменить объявленный тип элемента в существующих сообщениях. Ну, я думаю, что если вы сделаете true === 1, то, по крайней мере, это все еще работает - и для перехода вы должны ожидать, что ложное / не указано неоднозначное значение, пока вы не сбросите все старые данные.
Другой вариант - добавить элемент bool fooSpecified
для каждого bool foo
, но он занимает больше места и подвержен ошибкам из-за ручной настройки.