nominal_api/proto/google.protobuf.rs
1// This file is @generated by prost-build.
2/// A Timestamp represents a point in time independent of any time zone or local
3/// calendar, encoded as a count of seconds and fractions of seconds at
4/// nanosecond resolution. The count is relative to an epoch at UTC midnight on
5/// January 1, 1970, in the proleptic Gregorian calendar which extends the
6/// Gregorian calendar backwards to year one.
7///
8/// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
9/// second table is needed for interpretation, using a [24-hour linear
10/// smear](<https://developers.google.com/time/smear>).
11///
12/// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
13/// restricting to that range, we ensure that we can convert to and from [RFC
14/// 3339](<https://www.ietf.org/rfc/rfc3339.txt>) date strings.
15///
16/// # Examples
17///
18/// Example 1: Compute Timestamp from POSIX `time()`.
19///
20/// Timestamp timestamp;
21/// timestamp.set_seconds(time(NULL));
22/// timestamp.set_nanos(0);
23///
24/// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
25///
26/// struct timeval tv;
27/// gettimeofday(&tv, NULL);
28///
29/// Timestamp timestamp;
30/// timestamp.set_seconds(tv.tv_sec);
31/// timestamp.set_nanos(tv.tv_usec * 1000);
32///
33/// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
34///
35/// FILETIME ft;
36/// GetSystemTimeAsFileTime(&ft);
37/// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
38///
39/// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
40/// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
41/// Timestamp timestamp;
42/// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
43/// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
44///
45/// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
46///
47/// long millis = System.currentTimeMillis();
48///
49/// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
50/// .setNanos((int) ((millis % 1000) * 1000000)).build();
51///
52/// Example 5: Compute Timestamp from Java `Instant.now()`.
53///
54/// Instant now = Instant.now();
55///
56/// Timestamp timestamp =
57/// Timestamp.newBuilder().setSeconds(now.getEpochSecond())
58/// .setNanos(now.getNano()).build();
59///
60/// Example 6: Compute Timestamp from current time in Python.
61///
62/// timestamp = Timestamp()
63/// timestamp.GetCurrentTime()
64///
65/// # JSON Mapping
66///
67/// In JSON format, the Timestamp type is encoded as a string in the
68/// [RFC 3339](<https://www.ietf.org/rfc/rfc3339.txt>) format. That is, the
69/// format is "{year}-{month}-{day}T{hour}:{min}:{sec}\[.{frac_sec}\]Z"
70/// where {year} is always expressed using four digits while {month}, {day},
71/// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
72/// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
73/// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
74/// is required. A proto3 JSON serializer should always use UTC (as indicated by
75/// "Z") when printing the Timestamp type and a proto3 JSON parser should be
76/// able to accept both UTC and other timezones (as indicated by an offset).
77///
78/// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
79/// 01:30 UTC on January 15, 2017.
80///
81/// In JavaScript, one can convert a Date object to this format using the
82/// standard
83/// [toISOString()](<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString>)
84/// method. In Python, a standard `datetime.datetime` object can be converted
85/// to this format using
86/// [`strftime`](<https://docs.python.org/2/library/time.html#time.strftime>) with
87/// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
88/// the Joda Time's [`ISODateTimeFormat.dateTime()`](
89/// <http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime(>)
90/// ) to obtain a formatter capable of generating timestamps in this format.
91///
92#[derive(Clone, Copy, PartialEq, ::prost::Message)]
93pub struct Timestamp {
94 /// Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must
95 /// be between -315576000000 and 315576000000 inclusive (which corresponds to
96 /// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).
97 #[prost(int64, tag = "1")]
98 pub seconds: i64,
99 /// Non-negative fractions of a second at nanosecond resolution. This field is
100 /// the nanosecond portion of the duration, not an alternative to seconds.
101 /// Negative second values with fractions must still have non-negative nanos
102 /// values that count forward in time. Must be between 0 and 999,999,999
103 /// inclusive.
104 #[prost(int32, tag = "2")]
105 pub nanos: i32,
106}
107/// The protocol compiler can output a FileDescriptorSet containing the .proto
108/// files it parses.
109#[derive(Clone, PartialEq, ::prost::Message)]
110pub struct FileDescriptorSet {
111 #[prost(message, repeated, tag = "1")]
112 pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
113}
114/// Describes a complete .proto file.
115#[derive(Clone, PartialEq, ::prost::Message)]
116pub struct FileDescriptorProto {
117 /// file name, relative to root of source tree
118 #[prost(string, optional, tag = "1")]
119 pub name: ::core::option::Option<::prost::alloc::string::String>,
120 /// e.g. "foo", "foo.bar", etc.
121 #[prost(string, optional, tag = "2")]
122 pub package: ::core::option::Option<::prost::alloc::string::String>,
123 /// Names of files imported by this file.
124 #[prost(string, repeated, tag = "3")]
125 pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
126 /// Indexes of the public imported files in the dependency list above.
127 #[prost(int32, repeated, packed = "false", tag = "10")]
128 pub public_dependency: ::prost::alloc::vec::Vec<i32>,
129 /// Indexes of the weak imported files in the dependency list.
130 /// For Google-internal migration only. Do not use.
131 #[prost(int32, repeated, packed = "false", tag = "11")]
132 pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
133 /// Names of files imported by this file purely for the purpose of providing
134 /// option extensions. These are excluded from the dependency list above.
135 #[prost(string, repeated, tag = "15")]
136 pub option_dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
137 /// All top-level definitions in this file.
138 #[prost(message, repeated, tag = "4")]
139 pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
140 #[prost(message, repeated, tag = "5")]
141 pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
142 #[prost(message, repeated, tag = "6")]
143 pub service: ::prost::alloc::vec::Vec<ServiceDescriptorProto>,
144 #[prost(message, repeated, tag = "7")]
145 pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
146 #[prost(message, optional, tag = "8")]
147 pub options: ::core::option::Option<FileOptions>,
148 /// This field contains optional information about the original source code.
149 /// You may safely remove this entire field without harming runtime
150 /// functionality of the descriptors -- the information is needed only by
151 /// development tools.
152 #[prost(message, optional, tag = "9")]
153 pub source_code_info: ::core::option::Option<SourceCodeInfo>,
154 /// The syntax of the proto file.
155 /// The supported values are "proto2", "proto3", and "editions".
156 ///
157 /// If `edition` is present, this value must be "editions".
158 /// WARNING: This field should only be used by protobuf plugins or special
159 /// cases like the proto compiler. Other uses are discouraged and
160 /// developers should rely on the protoreflect APIs for their client language.
161 #[prost(string, optional, tag = "12")]
162 pub syntax: ::core::option::Option<::prost::alloc::string::String>,
163 /// The edition of the proto file.
164 /// WARNING: This field should only be used by protobuf plugins or special
165 /// cases like the proto compiler. Other uses are discouraged and
166 /// developers should rely on the protoreflect APIs for their client language.
167 #[prost(enumeration = "Edition", optional, tag = "14")]
168 pub edition: ::core::option::Option<i32>,
169}
170/// Describes a message type.
171#[derive(Clone, PartialEq, ::prost::Message)]
172pub struct DescriptorProto {
173 #[prost(string, optional, tag = "1")]
174 pub name: ::core::option::Option<::prost::alloc::string::String>,
175 #[prost(message, repeated, tag = "2")]
176 pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
177 #[prost(message, repeated, tag = "6")]
178 pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
179 #[prost(message, repeated, tag = "3")]
180 pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
181 #[prost(message, repeated, tag = "4")]
182 pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
183 #[prost(message, repeated, tag = "5")]
184 pub extension_range: ::prost::alloc::vec::Vec<descriptor_proto::ExtensionRange>,
185 #[prost(message, repeated, tag = "8")]
186 pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
187 #[prost(message, optional, tag = "7")]
188 pub options: ::core::option::Option<MessageOptions>,
189 #[prost(message, repeated, tag = "9")]
190 pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
191 /// Reserved field names, which may not be used by fields in the same message.
192 /// A given name may only be reserved once.
193 #[prost(string, repeated, tag = "10")]
194 pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
195 /// Support for `export` and `local` keywords on enums.
196 #[prost(enumeration = "SymbolVisibility", optional, tag = "11")]
197 pub visibility: ::core::option::Option<i32>,
198}
199/// Nested message and enum types in `DescriptorProto`.
200pub mod descriptor_proto {
201 #[derive(Clone, PartialEq, ::prost::Message)]
202 pub struct ExtensionRange {
203 /// Inclusive.
204 #[prost(int32, optional, tag = "1")]
205 pub start: ::core::option::Option<i32>,
206 /// Exclusive.
207 #[prost(int32, optional, tag = "2")]
208 pub end: ::core::option::Option<i32>,
209 #[prost(message, optional, tag = "3")]
210 pub options: ::core::option::Option<super::ExtensionRangeOptions>,
211 }
212 /// Range of reserved tag numbers. Reserved tag numbers may not be used by
213 /// fields or extension ranges in the same message. Reserved ranges may
214 /// not overlap.
215 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
216 pub struct ReservedRange {
217 /// Inclusive.
218 #[prost(int32, optional, tag = "1")]
219 pub start: ::core::option::Option<i32>,
220 /// Exclusive.
221 #[prost(int32, optional, tag = "2")]
222 pub end: ::core::option::Option<i32>,
223 }
224}
225#[derive(Clone, PartialEq, ::prost::Message)]
226pub struct ExtensionRangeOptions {
227 /// The parser stores options it doesn't recognize here. See above.
228 #[prost(message, repeated, tag = "999")]
229 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
230 /// For external users: DO NOT USE. We are in the process of open sourcing
231 /// extension declaration and executing internal cleanups before it can be
232 /// used externally.
233 #[prost(message, repeated, tag = "2")]
234 pub declaration: ::prost::alloc::vec::Vec<extension_range_options::Declaration>,
235 /// Any features defined in the specific edition.
236 #[prost(message, optional, tag = "50")]
237 pub features: ::core::option::Option<FeatureSet>,
238 /// The verification state of the range.
239 /// TODO: flip the default to DECLARATION once all empty ranges
240 /// are marked as UNVERIFIED.
241 #[prost(
242 enumeration = "extension_range_options::VerificationState",
243 optional,
244 tag = "3",
245 default = "Unverified"
246 )]
247 pub verification: ::core::option::Option<i32>,
248}
249/// Nested message and enum types in `ExtensionRangeOptions`.
250pub mod extension_range_options {
251 #[derive(Clone, PartialEq, ::prost::Message)]
252 pub struct Declaration {
253 /// The extension number declared within the extension range.
254 #[prost(int32, optional, tag = "1")]
255 pub number: ::core::option::Option<i32>,
256 /// The fully-qualified name of the extension field. There must be a leading
257 /// dot in front of the full name.
258 #[prost(string, optional, tag = "2")]
259 pub full_name: ::core::option::Option<::prost::alloc::string::String>,
260 /// The fully-qualified type name of the extension field. Unlike
261 /// Metadata.type, Declaration.type must have a leading dot for messages
262 /// and enums.
263 #[prost(string, optional, tag = "3")]
264 pub r#type: ::core::option::Option<::prost::alloc::string::String>,
265 /// If true, indicates that the number is reserved in the extension range,
266 /// and any extension field with the number will fail to compile. Set this
267 /// when a declared extension field is deleted.
268 #[prost(bool, optional, tag = "5")]
269 pub reserved: ::core::option::Option<bool>,
270 /// If true, indicates that the extension must be defined as repeated.
271 /// Otherwise the extension must be defined as optional.
272 #[prost(bool, optional, tag = "6")]
273 pub repeated: ::core::option::Option<bool>,
274 }
275 /// The verification state of the extension range.
276 #[derive(
277 Clone,
278 Copy,
279 Debug,
280 PartialEq,
281 Eq,
282 Hash,
283 PartialOrd,
284 Ord,
285 ::prost::Enumeration
286 )]
287 #[repr(i32)]
288 pub enum VerificationState {
289 /// All the extensions of the range must be declared.
290 Declaration = 0,
291 Unverified = 1,
292 }
293 impl VerificationState {
294 /// String value of the enum field names used in the ProtoBuf definition.
295 ///
296 /// The values are not transformed in any way and thus are considered stable
297 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
298 pub fn as_str_name(&self) -> &'static str {
299 match self {
300 Self::Declaration => "DECLARATION",
301 Self::Unverified => "UNVERIFIED",
302 }
303 }
304 /// Creates an enum from field names used in the ProtoBuf definition.
305 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
306 match value {
307 "DECLARATION" => Some(Self::Declaration),
308 "UNVERIFIED" => Some(Self::Unverified),
309 _ => None,
310 }
311 }
312 }
313}
314/// Describes a field within a message.
315#[derive(Clone, PartialEq, ::prost::Message)]
316pub struct FieldDescriptorProto {
317 #[prost(string, optional, tag = "1")]
318 pub name: ::core::option::Option<::prost::alloc::string::String>,
319 #[prost(int32, optional, tag = "3")]
320 pub number: ::core::option::Option<i32>,
321 #[prost(enumeration = "field_descriptor_proto::Label", optional, tag = "4")]
322 pub label: ::core::option::Option<i32>,
323 /// If type_name is set, this need not be set. If both this and type_name
324 /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
325 #[prost(enumeration = "field_descriptor_proto::Type", optional, tag = "5")]
326 pub r#type: ::core::option::Option<i32>,
327 /// For message and enum types, this is the name of the type. If the name
328 /// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
329 /// rules are used to find the type (i.e. first the nested types within this
330 /// message are searched, then within the parent, on up to the root
331 /// namespace).
332 #[prost(string, optional, tag = "6")]
333 pub type_name: ::core::option::Option<::prost::alloc::string::String>,
334 /// For extensions, this is the name of the type being extended. It is
335 /// resolved in the same manner as type_name.
336 #[prost(string, optional, tag = "2")]
337 pub extendee: ::core::option::Option<::prost::alloc::string::String>,
338 /// For numeric types, contains the original text representation of the value.
339 /// For booleans, "true" or "false".
340 /// For strings, contains the default text contents (not escaped in any way).
341 /// For bytes, contains the C escaped value. All bytes >= 128 are escaped.
342 #[prost(string, optional, tag = "7")]
343 pub default_value: ::core::option::Option<::prost::alloc::string::String>,
344 /// If set, gives the index of a oneof in the containing type's oneof_decl
345 /// list. This field is a member of that oneof.
346 #[prost(int32, optional, tag = "9")]
347 pub oneof_index: ::core::option::Option<i32>,
348 /// JSON name of this field. The value is set by protocol compiler. If the
349 /// user has set a "json_name" option on this field, that option's value
350 /// will be used. Otherwise, it's deduced from the field's name by converting
351 /// it to camelCase.
352 #[prost(string, optional, tag = "10")]
353 pub json_name: ::core::option::Option<::prost::alloc::string::String>,
354 #[prost(message, optional, tag = "8")]
355 pub options: ::core::option::Option<FieldOptions>,
356 /// If true, this is a proto3 "optional". When a proto3 field is optional, it
357 /// tracks presence regardless of field type.
358 ///
359 /// When proto3_optional is true, this field must belong to a oneof to signal
360 /// to old proto3 clients that presence is tracked for this field. This oneof
361 /// is known as a "synthetic" oneof, and this field must be its sole member
362 /// (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs
363 /// exist in the descriptor only, and do not generate any API. Synthetic oneofs
364 /// must be ordered after all "real" oneofs.
365 ///
366 /// For message fields, proto3_optional doesn't create any semantic change,
367 /// since non-repeated message fields always track presence. However it still
368 /// indicates the semantic detail of whether the user wrote "optional" or not.
369 /// This can be useful for round-tripping the .proto file. For consistency we
370 /// give message fields a synthetic oneof also, even though it is not required
371 /// to track presence. This is especially important because the parser can't
372 /// tell if a field is a message or an enum, so it must always create a
373 /// synthetic oneof.
374 ///
375 /// Proto2 optional fields do not set this flag, because they already indicate
376 /// optional with `LABEL_OPTIONAL`.
377 #[prost(bool, optional, tag = "17")]
378 pub proto3_optional: ::core::option::Option<bool>,
379}
380/// Nested message and enum types in `FieldDescriptorProto`.
381pub mod field_descriptor_proto {
382 #[derive(
383 Clone,
384 Copy,
385 Debug,
386 PartialEq,
387 Eq,
388 Hash,
389 PartialOrd,
390 Ord,
391 ::prost::Enumeration
392 )]
393 #[repr(i32)]
394 pub enum Type {
395 /// 0 is reserved for errors.
396 /// Order is weird for historical reasons.
397 Double = 1,
398 Float = 2,
399 /// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
400 /// negative values are likely.
401 Int64 = 3,
402 Uint64 = 4,
403 /// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
404 /// negative values are likely.
405 Int32 = 5,
406 Fixed64 = 6,
407 Fixed32 = 7,
408 Bool = 8,
409 String = 9,
410 /// Tag-delimited aggregate.
411 /// Group type is deprecated and not supported after google.protobuf. However, Proto3
412 /// implementations should still be able to parse the group wire format and
413 /// treat group fields as unknown fields. In Editions, the group wire format
414 /// can be enabled via the `message_encoding` feature.
415 Group = 10,
416 /// Length-delimited aggregate.
417 Message = 11,
418 /// New in version 2.
419 Bytes = 12,
420 Uint32 = 13,
421 Enum = 14,
422 Sfixed32 = 15,
423 Sfixed64 = 16,
424 /// Uses ZigZag encoding.
425 Sint32 = 17,
426 /// Uses ZigZag encoding.
427 Sint64 = 18,
428 }
429 impl Type {
430 /// String value of the enum field names used in the ProtoBuf definition.
431 ///
432 /// The values are not transformed in any way and thus are considered stable
433 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
434 pub fn as_str_name(&self) -> &'static str {
435 match self {
436 Self::Double => "TYPE_DOUBLE",
437 Self::Float => "TYPE_FLOAT",
438 Self::Int64 => "TYPE_INT64",
439 Self::Uint64 => "TYPE_UINT64",
440 Self::Int32 => "TYPE_INT32",
441 Self::Fixed64 => "TYPE_FIXED64",
442 Self::Fixed32 => "TYPE_FIXED32",
443 Self::Bool => "TYPE_BOOL",
444 Self::String => "TYPE_STRING",
445 Self::Group => "TYPE_GROUP",
446 Self::Message => "TYPE_MESSAGE",
447 Self::Bytes => "TYPE_BYTES",
448 Self::Uint32 => "TYPE_UINT32",
449 Self::Enum => "TYPE_ENUM",
450 Self::Sfixed32 => "TYPE_SFIXED32",
451 Self::Sfixed64 => "TYPE_SFIXED64",
452 Self::Sint32 => "TYPE_SINT32",
453 Self::Sint64 => "TYPE_SINT64",
454 }
455 }
456 /// Creates an enum from field names used in the ProtoBuf definition.
457 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
458 match value {
459 "TYPE_DOUBLE" => Some(Self::Double),
460 "TYPE_FLOAT" => Some(Self::Float),
461 "TYPE_INT64" => Some(Self::Int64),
462 "TYPE_UINT64" => Some(Self::Uint64),
463 "TYPE_INT32" => Some(Self::Int32),
464 "TYPE_FIXED64" => Some(Self::Fixed64),
465 "TYPE_FIXED32" => Some(Self::Fixed32),
466 "TYPE_BOOL" => Some(Self::Bool),
467 "TYPE_STRING" => Some(Self::String),
468 "TYPE_GROUP" => Some(Self::Group),
469 "TYPE_MESSAGE" => Some(Self::Message),
470 "TYPE_BYTES" => Some(Self::Bytes),
471 "TYPE_UINT32" => Some(Self::Uint32),
472 "TYPE_ENUM" => Some(Self::Enum),
473 "TYPE_SFIXED32" => Some(Self::Sfixed32),
474 "TYPE_SFIXED64" => Some(Self::Sfixed64),
475 "TYPE_SINT32" => Some(Self::Sint32),
476 "TYPE_SINT64" => Some(Self::Sint64),
477 _ => None,
478 }
479 }
480 }
481 #[derive(
482 Clone,
483 Copy,
484 Debug,
485 PartialEq,
486 Eq,
487 Hash,
488 PartialOrd,
489 Ord,
490 ::prost::Enumeration
491 )]
492 #[repr(i32)]
493 pub enum Label {
494 /// 0 is reserved for errors
495 Optional = 1,
496 Repeated = 3,
497 /// The required label is only allowed in google.protobuf. In proto3 and Editions
498 /// it's explicitly prohibited. In Editions, the `field_presence` feature
499 /// can be used to get this behavior.
500 Required = 2,
501 }
502 impl Label {
503 /// String value of the enum field names used in the ProtoBuf definition.
504 ///
505 /// The values are not transformed in any way and thus are considered stable
506 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
507 pub fn as_str_name(&self) -> &'static str {
508 match self {
509 Self::Optional => "LABEL_OPTIONAL",
510 Self::Repeated => "LABEL_REPEATED",
511 Self::Required => "LABEL_REQUIRED",
512 }
513 }
514 /// Creates an enum from field names used in the ProtoBuf definition.
515 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
516 match value {
517 "LABEL_OPTIONAL" => Some(Self::Optional),
518 "LABEL_REPEATED" => Some(Self::Repeated),
519 "LABEL_REQUIRED" => Some(Self::Required),
520 _ => None,
521 }
522 }
523 }
524}
525/// Describes a oneof.
526#[derive(Clone, PartialEq, ::prost::Message)]
527pub struct OneofDescriptorProto {
528 #[prost(string, optional, tag = "1")]
529 pub name: ::core::option::Option<::prost::alloc::string::String>,
530 #[prost(message, optional, tag = "2")]
531 pub options: ::core::option::Option<OneofOptions>,
532}
533/// Describes an enum type.
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct EnumDescriptorProto {
536 #[prost(string, optional, tag = "1")]
537 pub name: ::core::option::Option<::prost::alloc::string::String>,
538 #[prost(message, repeated, tag = "2")]
539 pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
540 #[prost(message, optional, tag = "3")]
541 pub options: ::core::option::Option<EnumOptions>,
542 /// Range of reserved numeric values. Reserved numeric values may not be used
543 /// by enum values in the same enum declaration. Reserved ranges may not
544 /// overlap.
545 #[prost(message, repeated, tag = "4")]
546 pub reserved_range: ::prost::alloc::vec::Vec<
547 enum_descriptor_proto::EnumReservedRange,
548 >,
549 /// Reserved enum value names, which may not be reused. A given name may only
550 /// be reserved once.
551 #[prost(string, repeated, tag = "5")]
552 pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
553 /// Support for `export` and `local` keywords on enums.
554 #[prost(enumeration = "SymbolVisibility", optional, tag = "6")]
555 pub visibility: ::core::option::Option<i32>,
556}
557/// Nested message and enum types in `EnumDescriptorProto`.
558pub mod enum_descriptor_proto {
559 /// Range of reserved numeric values. Reserved values may not be used by
560 /// entries in the same enum. Reserved ranges may not overlap.
561 ///
562 /// Note that this is distinct from DescriptorProto.ReservedRange in that it
563 /// is inclusive such that it can appropriately represent the entire int32
564 /// domain.
565 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
566 pub struct EnumReservedRange {
567 /// Inclusive.
568 #[prost(int32, optional, tag = "1")]
569 pub start: ::core::option::Option<i32>,
570 /// Inclusive.
571 #[prost(int32, optional, tag = "2")]
572 pub end: ::core::option::Option<i32>,
573 }
574}
575/// Describes a value within an enum.
576#[derive(Clone, PartialEq, ::prost::Message)]
577pub struct EnumValueDescriptorProto {
578 #[prost(string, optional, tag = "1")]
579 pub name: ::core::option::Option<::prost::alloc::string::String>,
580 #[prost(int32, optional, tag = "2")]
581 pub number: ::core::option::Option<i32>,
582 #[prost(message, optional, tag = "3")]
583 pub options: ::core::option::Option<EnumValueOptions>,
584}
585/// Describes a service.
586#[derive(Clone, PartialEq, ::prost::Message)]
587pub struct ServiceDescriptorProto {
588 #[prost(string, optional, tag = "1")]
589 pub name: ::core::option::Option<::prost::alloc::string::String>,
590 #[prost(message, repeated, tag = "2")]
591 pub method: ::prost::alloc::vec::Vec<MethodDescriptorProto>,
592 #[prost(message, optional, tag = "3")]
593 pub options: ::core::option::Option<ServiceOptions>,
594}
595/// Describes a method of a service.
596#[derive(Clone, PartialEq, ::prost::Message)]
597pub struct MethodDescriptorProto {
598 #[prost(string, optional, tag = "1")]
599 pub name: ::core::option::Option<::prost::alloc::string::String>,
600 /// Input and output type names. These are resolved in the same way as
601 /// FieldDescriptorProto.type_name, but must refer to a message type.
602 #[prost(string, optional, tag = "2")]
603 pub input_type: ::core::option::Option<::prost::alloc::string::String>,
604 #[prost(string, optional, tag = "3")]
605 pub output_type: ::core::option::Option<::prost::alloc::string::String>,
606 #[prost(message, optional, tag = "4")]
607 pub options: ::core::option::Option<MethodOptions>,
608 /// Identifies if client streams multiple client messages
609 #[prost(bool, optional, tag = "5", default = "false")]
610 pub client_streaming: ::core::option::Option<bool>,
611 /// Identifies if server streams multiple server messages
612 #[prost(bool, optional, tag = "6", default = "false")]
613 pub server_streaming: ::core::option::Option<bool>,
614}
615#[derive(Clone, PartialEq, ::prost::Message)]
616pub struct FileOptions {
617 /// Sets the Java package where classes generated from this .proto will be
618 /// placed. By default, the proto package is used, but this is often
619 /// inappropriate because proto packages do not normally start with backwards
620 /// domain names.
621 #[prost(string, optional, tag = "1")]
622 pub java_package: ::core::option::Option<::prost::alloc::string::String>,
623 /// Controls the name of the wrapper Java class generated for the .proto file.
624 /// That class will always contain the .proto file's getDescriptor() method as
625 /// well as any top-level extensions defined in the .proto file.
626 /// If java_multiple_files is disabled, then all the other classes from the
627 /// .proto file will be nested inside the single wrapper outer class.
628 #[prost(string, optional, tag = "8")]
629 pub java_outer_classname: ::core::option::Option<::prost::alloc::string::String>,
630 /// If enabled, then the Java code generator will generate a separate .java
631 /// file for each top-level message, enum, and service defined in the .proto
632 /// file. Thus, these types will *not* be nested inside the wrapper class
633 /// named by java_outer_classname. However, the wrapper class will still be
634 /// generated to contain the file's getDescriptor() method as well as any
635 /// top-level extensions defined in the file.
636 #[prost(bool, optional, tag = "10", default = "false")]
637 pub java_multiple_files: ::core::option::Option<bool>,
638 /// This option does nothing.
639 #[deprecated]
640 #[prost(bool, optional, tag = "20")]
641 pub java_generate_equals_and_hash: ::core::option::Option<bool>,
642 /// A proto2 file can set this to true to opt in to UTF-8 checking for Java,
643 /// which will throw an exception if invalid UTF-8 is parsed from the wire or
644 /// assigned to a string field.
645 ///
646 /// TODO: clarify exactly what kinds of field types this option
647 /// applies to, and update these docs accordingly.
648 ///
649 /// Proto3 files already perform these checks. Setting the option explicitly to
650 /// false has no effect: it cannot be used to opt proto3 files out of UTF-8
651 /// checks.
652 #[prost(bool, optional, tag = "27", default = "false")]
653 pub java_string_check_utf8: ::core::option::Option<bool>,
654 #[prost(
655 enumeration = "file_options::OptimizeMode",
656 optional,
657 tag = "9",
658 default = "Speed"
659 )]
660 pub optimize_for: ::core::option::Option<i32>,
661 /// Sets the Go package where structs generated from this .proto will be
662 /// placed. If omitted, the Go package will be derived from the following:
663 /// - The basename of the package import path, if provided.
664 /// - Otherwise, the package statement in the .proto file, if present.
665 /// - Otherwise, the basename of the .proto file, without extension.
666 #[prost(string, optional, tag = "11")]
667 pub go_package: ::core::option::Option<::prost::alloc::string::String>,
668 /// Should generic services be generated in each language? "Generic" services
669 /// are not specific to any particular RPC system. They are generated by the
670 /// main code generators in each language (without additional plugins).
671 /// Generic services were the only kind of service generation supported by
672 /// early versions of google.protobuf.
673 ///
674 /// Generic services are now considered deprecated in favor of using plugins
675 /// that generate code specific to your particular RPC system. Therefore,
676 /// these default to false. Old code which depends on generic services should
677 /// explicitly set them to true.
678 #[prost(bool, optional, tag = "16", default = "false")]
679 pub cc_generic_services: ::core::option::Option<bool>,
680 #[prost(bool, optional, tag = "17", default = "false")]
681 pub java_generic_services: ::core::option::Option<bool>,
682 #[prost(bool, optional, tag = "18", default = "false")]
683 pub py_generic_services: ::core::option::Option<bool>,
684 /// Is this file deprecated?
685 /// Depending on the target platform, this can emit Deprecated annotations
686 /// for everything in the file, or it will be completely ignored; in the very
687 /// least, this is a formalization for deprecating files.
688 #[prost(bool, optional, tag = "23", default = "false")]
689 pub deprecated: ::core::option::Option<bool>,
690 /// Enables the use of arenas for the proto messages in this file. This applies
691 /// only to generated classes for C++.
692 #[prost(bool, optional, tag = "31", default = "true")]
693 pub cc_enable_arenas: ::core::option::Option<bool>,
694 /// Sets the objective c class prefix which is prepended to all objective c
695 /// generated classes from this .proto. There is no default.
696 #[prost(string, optional, tag = "36")]
697 pub objc_class_prefix: ::core::option::Option<::prost::alloc::string::String>,
698 /// Namespace for generated classes; defaults to the package.
699 #[prost(string, optional, tag = "37")]
700 pub csharp_namespace: ::core::option::Option<::prost::alloc::string::String>,
701 /// By default Swift generators will take the proto package and CamelCase it
702 /// replacing '.' with underscore and use that to prefix the types/symbols
703 /// defined. When this options is provided, they will use this value instead
704 /// to prefix the types/symbols defined.
705 #[prost(string, optional, tag = "39")]
706 pub swift_prefix: ::core::option::Option<::prost::alloc::string::String>,
707 /// Sets the php class prefix which is prepended to all php generated classes
708 /// from this .proto. Default is empty.
709 #[prost(string, optional, tag = "40")]
710 pub php_class_prefix: ::core::option::Option<::prost::alloc::string::String>,
711 /// Use this option to change the namespace of php generated classes. Default
712 /// is empty. When this option is empty, the package name will be used for
713 /// determining the namespace.
714 #[prost(string, optional, tag = "41")]
715 pub php_namespace: ::core::option::Option<::prost::alloc::string::String>,
716 /// Use this option to change the namespace of php generated metadata classes.
717 /// Default is empty. When this option is empty, the proto file name will be
718 /// used for determining the namespace.
719 #[prost(string, optional, tag = "44")]
720 pub php_metadata_namespace: ::core::option::Option<::prost::alloc::string::String>,
721 /// Use this option to change the package of ruby generated classes. Default
722 /// is empty. When this option is not set, the package name will be used for
723 /// determining the ruby package.
724 #[prost(string, optional, tag = "45")]
725 pub ruby_package: ::core::option::Option<::prost::alloc::string::String>,
726 /// Any features defined in the specific edition.
727 /// WARNING: This field should only be used by protobuf plugins or special
728 /// cases like the proto compiler. Other uses are discouraged and
729 /// developers should rely on the protoreflect APIs for their client language.
730 #[prost(message, optional, tag = "50")]
731 pub features: ::core::option::Option<FeatureSet>,
732 /// The parser stores options it doesn't recognize here.
733 /// See the documentation for the "Options" section above.
734 #[prost(message, repeated, tag = "999")]
735 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
736}
737/// Nested message and enum types in `FileOptions`.
738pub mod file_options {
739 /// Generated classes can be optimized for speed or code size.
740 #[derive(
741 Clone,
742 Copy,
743 Debug,
744 PartialEq,
745 Eq,
746 Hash,
747 PartialOrd,
748 Ord,
749 ::prost::Enumeration
750 )]
751 #[repr(i32)]
752 pub enum OptimizeMode {
753 /// Generate complete code for parsing, serialization,
754 Speed = 1,
755 /// etc.
756 ///
757 /// Use ReflectionOps to implement these methods.
758 CodeSize = 2,
759 /// Generate code using MessageLite and the lite runtime.
760 LiteRuntime = 3,
761 }
762 impl OptimizeMode {
763 /// String value of the enum field names used in the ProtoBuf definition.
764 ///
765 /// The values are not transformed in any way and thus are considered stable
766 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
767 pub fn as_str_name(&self) -> &'static str {
768 match self {
769 Self::Speed => "SPEED",
770 Self::CodeSize => "CODE_SIZE",
771 Self::LiteRuntime => "LITE_RUNTIME",
772 }
773 }
774 /// Creates an enum from field names used in the ProtoBuf definition.
775 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
776 match value {
777 "SPEED" => Some(Self::Speed),
778 "CODE_SIZE" => Some(Self::CodeSize),
779 "LITE_RUNTIME" => Some(Self::LiteRuntime),
780 _ => None,
781 }
782 }
783 }
784}
785#[derive(Clone, PartialEq, ::prost::Message)]
786pub struct MessageOptions {
787 /// Set true to use the old proto1 MessageSet wire format for extensions.
788 /// This is provided for backwards-compatibility with the MessageSet wire
789 /// format. You should not use this for any other reason: It's less
790 /// efficient, has fewer features, and is more complicated.
791 ///
792 /// The message must be defined exactly as follows:
793 /// message Foo {
794 /// option message_set_wire_format = true;
795 /// extensions 4 to max;
796 /// }
797 /// Note that the message cannot have any defined fields; MessageSets only
798 /// have extensions.
799 ///
800 /// All extensions of your type must be singular messages; e.g. they cannot
801 /// be int32s, enums, or repeated messages.
802 ///
803 /// Because this is an option, the above two restrictions are not enforced by
804 /// the protocol compiler.
805 #[prost(bool, optional, tag = "1", default = "false")]
806 pub message_set_wire_format: ::core::option::Option<bool>,
807 /// Disables the generation of the standard "descriptor()" accessor, which can
808 /// conflict with a field of the same name. This is meant to make migration
809 /// from proto1 easier; new code should avoid fields named "descriptor".
810 #[prost(bool, optional, tag = "2", default = "false")]
811 pub no_standard_descriptor_accessor: ::core::option::Option<bool>,
812 /// Is this message deprecated?
813 /// Depending on the target platform, this can emit Deprecated annotations
814 /// for the message, or it will be completely ignored; in the very least,
815 /// this is a formalization for deprecating messages.
816 #[prost(bool, optional, tag = "3", default = "false")]
817 pub deprecated: ::core::option::Option<bool>,
818 /// Whether the message is an automatically generated map entry type for the
819 /// maps field.
820 ///
821 /// For maps fields:
822 /// map<KeyType, ValueType> map_field = 1;
823 /// The parsed descriptor looks like:
824 /// message MapFieldEntry {
825 /// option map_entry = true;
826 /// optional KeyType key = 1;
827 /// optional ValueType value = 2;
828 /// }
829 /// repeated MapFieldEntry map_field = 1;
830 ///
831 /// Implementations may choose not to generate the map_entry=true message, but
832 /// use a native map in the target language to hold the keys and values.
833 /// The reflection APIs in such implementations still need to work as
834 /// if the field is a repeated message field.
835 ///
836 /// NOTE: Do not set the option in .proto files. Always use the maps syntax
837 /// instead. The option should only be implicitly set by the proto compiler
838 /// parser.
839 #[prost(bool, optional, tag = "7")]
840 pub map_entry: ::core::option::Option<bool>,
841 /// Enable the legacy handling of JSON field name conflicts. This lowercases
842 /// and strips underscored from the fields before comparison in proto3 only.
843 /// The new behavior takes `json_name` into account and applies to proto2 as
844 /// well.
845 ///
846 /// This should only be used as a temporary measure against broken builds due
847 /// to the change in behavior for JSON field name conflicts.
848 ///
849 /// TODO This is legacy behavior we plan to remove once downstream
850 /// teams have had time to migrate.
851 #[deprecated]
852 #[prost(bool, optional, tag = "11")]
853 pub deprecated_legacy_json_field_conflicts: ::core::option::Option<bool>,
854 /// Any features defined in the specific edition.
855 /// WARNING: This field should only be used by protobuf plugins or special
856 /// cases like the proto compiler. Other uses are discouraged and
857 /// developers should rely on the protoreflect APIs for their client language.
858 #[prost(message, optional, tag = "12")]
859 pub features: ::core::option::Option<FeatureSet>,
860 /// The parser stores options it doesn't recognize here. See above.
861 #[prost(message, repeated, tag = "999")]
862 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
863}
864#[derive(Clone, PartialEq, ::prost::Message)]
865pub struct FieldOptions {
866 /// NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
867 /// The ctype option instructs the C++ code generator to use a different
868 /// representation of the field than it normally would. See the specific
869 /// options below. This option is only implemented to support use of
870 /// \[ctype=CORD\] and \[ctype=STRING\] (the default) on non-repeated fields of
871 /// type "bytes" in the open source release.
872 /// TODO: make ctype actually deprecated.
873 #[prost(
874 enumeration = "field_options::CType",
875 optional,
876 tag = "1",
877 default = "String"
878 )]
879 pub ctype: ::core::option::Option<i32>,
880 /// The packed option can be enabled for repeated primitive fields to enable
881 /// a more efficient representation on the wire. Rather than repeatedly
882 /// writing the tag and type for each element, the entire array is encoded as
883 /// a single length-delimited blob. In proto3, only explicit setting it to
884 /// false will avoid using packed encoding. This option is prohibited in
885 /// Editions, but the `repeated_field_encoding` feature can be used to control
886 /// the behavior.
887 #[prost(bool, optional, tag = "2")]
888 pub packed: ::core::option::Option<bool>,
889 /// The jstype option determines the JavaScript type used for values of the
890 /// field. The option is permitted only for 64 bit integral and fixed types
891 /// (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
892 /// is represented as JavaScript string, which avoids loss of precision that
893 /// can happen when a large value is converted to a floating point JavaScript.
894 /// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
895 /// use the JavaScript "number" type. The behavior of the default option
896 /// JS_NORMAL is implementation dependent.
897 ///
898 /// This option is an enum to permit additional types to be added, e.g.
899 /// goog.math.Integer.
900 #[prost(
901 enumeration = "field_options::JsType",
902 optional,
903 tag = "6",
904 default = "JsNormal"
905 )]
906 pub jstype: ::core::option::Option<i32>,
907 /// Should this field be parsed lazily? Lazy applies only to message-type
908 /// fields. It means that when the outer message is initially parsed, the
909 /// inner message's contents will not be parsed but instead stored in encoded
910 /// form. The inner message will actually be parsed when it is first accessed.
911 ///
912 /// This is only a hint. Implementations are free to choose whether to use
913 /// eager or lazy parsing regardless of the value of this option. However,
914 /// setting this option true suggests that the protocol author believes that
915 /// using lazy parsing on this field is worth the additional bookkeeping
916 /// overhead typically needed to implement it.
917 ///
918 /// This option does not affect the public interface of any generated code;
919 /// all method signatures remain the same. Furthermore, thread-safety of the
920 /// interface is not affected by this option; const methods remain safe to
921 /// call from multiple threads concurrently, while non-const methods continue
922 /// to require exclusive access.
923 ///
924 /// Note that lazy message fields are still eagerly verified to check
925 /// ill-formed wireformat or missing required fields. Calling IsInitialized()
926 /// on the outer message would fail if the inner message has missing required
927 /// fields. Failed verification would result in parsing failure (except when
928 /// uninitialized messages are acceptable).
929 #[prost(bool, optional, tag = "5", default = "false")]
930 pub lazy: ::core::option::Option<bool>,
931 /// unverified_lazy does no correctness checks on the byte stream. This should
932 /// only be used where lazy with verification is prohibitive for performance
933 /// reasons.
934 #[prost(bool, optional, tag = "15", default = "false")]
935 pub unverified_lazy: ::core::option::Option<bool>,
936 /// Is this field deprecated?
937 /// Depending on the target platform, this can emit Deprecated annotations
938 /// for accessors, or it will be completely ignored; in the very least, this
939 /// is a formalization for deprecating fields.
940 #[prost(bool, optional, tag = "3", default = "false")]
941 pub deprecated: ::core::option::Option<bool>,
942 /// DEPRECATED. DO NOT USE!
943 /// For Google-internal migration only. Do not use.
944 #[deprecated]
945 #[prost(bool, optional, tag = "10", default = "false")]
946 pub weak: ::core::option::Option<bool>,
947 /// Indicate that the field value should not be printed out when using debug
948 /// formats, e.g. when the field contains sensitive credentials.
949 #[prost(bool, optional, tag = "16", default = "false")]
950 pub debug_redact: ::core::option::Option<bool>,
951 #[prost(enumeration = "field_options::OptionRetention", optional, tag = "17")]
952 pub retention: ::core::option::Option<i32>,
953 #[prost(
954 enumeration = "field_options::OptionTargetType",
955 repeated,
956 packed = "false",
957 tag = "19"
958 )]
959 pub targets: ::prost::alloc::vec::Vec<i32>,
960 #[prost(message, repeated, tag = "20")]
961 pub edition_defaults: ::prost::alloc::vec::Vec<field_options::EditionDefault>,
962 /// Any features defined in the specific edition.
963 /// WARNING: This field should only be used by protobuf plugins or special
964 /// cases like the proto compiler. Other uses are discouraged and
965 /// developers should rely on the protoreflect APIs for their client language.
966 #[prost(message, optional, tag = "21")]
967 pub features: ::core::option::Option<FeatureSet>,
968 #[prost(message, optional, tag = "22")]
969 pub feature_support: ::core::option::Option<field_options::FeatureSupport>,
970 /// The parser stores options it doesn't recognize here. See above.
971 #[prost(message, repeated, tag = "999")]
972 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
973}
974/// Nested message and enum types in `FieldOptions`.
975pub mod field_options {
976 #[derive(Clone, PartialEq, ::prost::Message)]
977 pub struct EditionDefault {
978 #[prost(enumeration = "super::Edition", optional, tag = "3")]
979 pub edition: ::core::option::Option<i32>,
980 /// Textproto value.
981 #[prost(string, optional, tag = "2")]
982 pub value: ::core::option::Option<::prost::alloc::string::String>,
983 }
984 /// Information about the support window of a feature.
985 #[derive(Clone, PartialEq, ::prost::Message)]
986 pub struct FeatureSupport {
987 /// The edition that this feature was first available in. In editions
988 /// earlier than this one, the default assigned to EDITION_LEGACY will be
989 /// used, and proto files will not be able to override it.
990 #[prost(enumeration = "super::Edition", optional, tag = "1")]
991 pub edition_introduced: ::core::option::Option<i32>,
992 /// The edition this feature becomes deprecated in. Using this after this
993 /// edition may trigger warnings.
994 #[prost(enumeration = "super::Edition", optional, tag = "2")]
995 pub edition_deprecated: ::core::option::Option<i32>,
996 /// The deprecation warning text if this feature is used after the edition it
997 /// was marked deprecated in.
998 #[prost(string, optional, tag = "3")]
999 pub deprecation_warning: ::core::option::Option<::prost::alloc::string::String>,
1000 /// The edition this feature is no longer available in. In editions after
1001 /// this one, the last default assigned will be used, and proto files will
1002 /// not be able to override it.
1003 #[prost(enumeration = "super::Edition", optional, tag = "4")]
1004 pub edition_removed: ::core::option::Option<i32>,
1005 }
1006 #[derive(
1007 Clone,
1008 Copy,
1009 Debug,
1010 PartialEq,
1011 Eq,
1012 Hash,
1013 PartialOrd,
1014 Ord,
1015 ::prost::Enumeration
1016 )]
1017 #[repr(i32)]
1018 pub enum CType {
1019 /// Default mode.
1020 String = 0,
1021 /// The option \[ctype=CORD\] may be applied to a non-repeated field of type
1022 /// "bytes". It indicates that in C++, the data should be stored in a Cord
1023 /// instead of a string. For very large strings, this may reduce memory
1024 /// fragmentation. It may also allow better performance when parsing from a
1025 /// Cord, or when parsing with aliasing enabled, as the parsed Cord may then
1026 /// alias the original buffer.
1027 Cord = 1,
1028 StringPiece = 2,
1029 }
1030 impl CType {
1031 /// String value of the enum field names used in the ProtoBuf definition.
1032 ///
1033 /// The values are not transformed in any way and thus are considered stable
1034 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1035 pub fn as_str_name(&self) -> &'static str {
1036 match self {
1037 Self::String => "STRING",
1038 Self::Cord => "CORD",
1039 Self::StringPiece => "STRING_PIECE",
1040 }
1041 }
1042 /// Creates an enum from field names used in the ProtoBuf definition.
1043 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1044 match value {
1045 "STRING" => Some(Self::String),
1046 "CORD" => Some(Self::Cord),
1047 "STRING_PIECE" => Some(Self::StringPiece),
1048 _ => None,
1049 }
1050 }
1051 }
1052 #[derive(
1053 Clone,
1054 Copy,
1055 Debug,
1056 PartialEq,
1057 Eq,
1058 Hash,
1059 PartialOrd,
1060 Ord,
1061 ::prost::Enumeration
1062 )]
1063 #[repr(i32)]
1064 pub enum JsType {
1065 /// Use the default type.
1066 JsNormal = 0,
1067 /// Use JavaScript strings.
1068 JsString = 1,
1069 /// Use JavaScript numbers.
1070 JsNumber = 2,
1071 }
1072 impl JsType {
1073 /// String value of the enum field names used in the ProtoBuf definition.
1074 ///
1075 /// The values are not transformed in any way and thus are considered stable
1076 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1077 pub fn as_str_name(&self) -> &'static str {
1078 match self {
1079 Self::JsNormal => "JS_NORMAL",
1080 Self::JsString => "JS_STRING",
1081 Self::JsNumber => "JS_NUMBER",
1082 }
1083 }
1084 /// Creates an enum from field names used in the ProtoBuf definition.
1085 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1086 match value {
1087 "JS_NORMAL" => Some(Self::JsNormal),
1088 "JS_STRING" => Some(Self::JsString),
1089 "JS_NUMBER" => Some(Self::JsNumber),
1090 _ => None,
1091 }
1092 }
1093 }
1094 /// If set to RETENTION_SOURCE, the option will be omitted from the binary.
1095 #[derive(
1096 Clone,
1097 Copy,
1098 Debug,
1099 PartialEq,
1100 Eq,
1101 Hash,
1102 PartialOrd,
1103 Ord,
1104 ::prost::Enumeration
1105 )]
1106 #[repr(i32)]
1107 pub enum OptionRetention {
1108 RetentionUnknown = 0,
1109 RetentionRuntime = 1,
1110 RetentionSource = 2,
1111 }
1112 impl OptionRetention {
1113 /// String value of the enum field names used in the ProtoBuf definition.
1114 ///
1115 /// The values are not transformed in any way and thus are considered stable
1116 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1117 pub fn as_str_name(&self) -> &'static str {
1118 match self {
1119 Self::RetentionUnknown => "RETENTION_UNKNOWN",
1120 Self::RetentionRuntime => "RETENTION_RUNTIME",
1121 Self::RetentionSource => "RETENTION_SOURCE",
1122 }
1123 }
1124 /// Creates an enum from field names used in the ProtoBuf definition.
1125 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1126 match value {
1127 "RETENTION_UNKNOWN" => Some(Self::RetentionUnknown),
1128 "RETENTION_RUNTIME" => Some(Self::RetentionRuntime),
1129 "RETENTION_SOURCE" => Some(Self::RetentionSource),
1130 _ => None,
1131 }
1132 }
1133 }
1134 /// This indicates the types of entities that the field may apply to when used
1135 /// as an option. If it is unset, then the field may be freely used as an
1136 /// option on any kind of entity.
1137 #[derive(
1138 Clone,
1139 Copy,
1140 Debug,
1141 PartialEq,
1142 Eq,
1143 Hash,
1144 PartialOrd,
1145 Ord,
1146 ::prost::Enumeration
1147 )]
1148 #[repr(i32)]
1149 pub enum OptionTargetType {
1150 TargetTypeUnknown = 0,
1151 TargetTypeFile = 1,
1152 TargetTypeExtensionRange = 2,
1153 TargetTypeMessage = 3,
1154 TargetTypeField = 4,
1155 TargetTypeOneof = 5,
1156 TargetTypeEnum = 6,
1157 TargetTypeEnumEntry = 7,
1158 TargetTypeService = 8,
1159 TargetTypeMethod = 9,
1160 }
1161 impl OptionTargetType {
1162 /// String value of the enum field names used in the ProtoBuf definition.
1163 ///
1164 /// The values are not transformed in any way and thus are considered stable
1165 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1166 pub fn as_str_name(&self) -> &'static str {
1167 match self {
1168 Self::TargetTypeUnknown => "TARGET_TYPE_UNKNOWN",
1169 Self::TargetTypeFile => "TARGET_TYPE_FILE",
1170 Self::TargetTypeExtensionRange => "TARGET_TYPE_EXTENSION_RANGE",
1171 Self::TargetTypeMessage => "TARGET_TYPE_MESSAGE",
1172 Self::TargetTypeField => "TARGET_TYPE_FIELD",
1173 Self::TargetTypeOneof => "TARGET_TYPE_ONEOF",
1174 Self::TargetTypeEnum => "TARGET_TYPE_ENUM",
1175 Self::TargetTypeEnumEntry => "TARGET_TYPE_ENUM_ENTRY",
1176 Self::TargetTypeService => "TARGET_TYPE_SERVICE",
1177 Self::TargetTypeMethod => "TARGET_TYPE_METHOD",
1178 }
1179 }
1180 /// Creates an enum from field names used in the ProtoBuf definition.
1181 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1182 match value {
1183 "TARGET_TYPE_UNKNOWN" => Some(Self::TargetTypeUnknown),
1184 "TARGET_TYPE_FILE" => Some(Self::TargetTypeFile),
1185 "TARGET_TYPE_EXTENSION_RANGE" => Some(Self::TargetTypeExtensionRange),
1186 "TARGET_TYPE_MESSAGE" => Some(Self::TargetTypeMessage),
1187 "TARGET_TYPE_FIELD" => Some(Self::TargetTypeField),
1188 "TARGET_TYPE_ONEOF" => Some(Self::TargetTypeOneof),
1189 "TARGET_TYPE_ENUM" => Some(Self::TargetTypeEnum),
1190 "TARGET_TYPE_ENUM_ENTRY" => Some(Self::TargetTypeEnumEntry),
1191 "TARGET_TYPE_SERVICE" => Some(Self::TargetTypeService),
1192 "TARGET_TYPE_METHOD" => Some(Self::TargetTypeMethod),
1193 _ => None,
1194 }
1195 }
1196 }
1197}
1198#[derive(Clone, PartialEq, ::prost::Message)]
1199pub struct OneofOptions {
1200 /// Any features defined in the specific edition.
1201 /// WARNING: This field should only be used by protobuf plugins or special
1202 /// cases like the proto compiler. Other uses are discouraged and
1203 /// developers should rely on the protoreflect APIs for their client language.
1204 #[prost(message, optional, tag = "1")]
1205 pub features: ::core::option::Option<FeatureSet>,
1206 /// The parser stores options it doesn't recognize here. See above.
1207 #[prost(message, repeated, tag = "999")]
1208 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
1209}
1210#[derive(Clone, PartialEq, ::prost::Message)]
1211pub struct EnumOptions {
1212 /// Set this option to true to allow mapping different tag names to the same
1213 /// value.
1214 #[prost(bool, optional, tag = "2")]
1215 pub allow_alias: ::core::option::Option<bool>,
1216 /// Is this enum deprecated?
1217 /// Depending on the target platform, this can emit Deprecated annotations
1218 /// for the enum, or it will be completely ignored; in the very least, this
1219 /// is a formalization for deprecating enums.
1220 #[prost(bool, optional, tag = "3", default = "false")]
1221 pub deprecated: ::core::option::Option<bool>,
1222 /// Enable the legacy handling of JSON field name conflicts. This lowercases
1223 /// and strips underscored from the fields before comparison in proto3 only.
1224 /// The new behavior takes `json_name` into account and applies to proto2 as
1225 /// well.
1226 /// TODO Remove this legacy behavior once downstream teams have
1227 /// had time to migrate.
1228 #[deprecated]
1229 #[prost(bool, optional, tag = "6")]
1230 pub deprecated_legacy_json_field_conflicts: ::core::option::Option<bool>,
1231 /// Any features defined in the specific edition.
1232 /// WARNING: This field should only be used by protobuf plugins or special
1233 /// cases like the proto compiler. Other uses are discouraged and
1234 /// developers should rely on the protoreflect APIs for their client language.
1235 #[prost(message, optional, tag = "7")]
1236 pub features: ::core::option::Option<FeatureSet>,
1237 /// The parser stores options it doesn't recognize here. See above.
1238 #[prost(message, repeated, tag = "999")]
1239 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
1240}
1241#[derive(Clone, PartialEq, ::prost::Message)]
1242pub struct EnumValueOptions {
1243 /// Is this enum value deprecated?
1244 /// Depending on the target platform, this can emit Deprecated annotations
1245 /// for the enum value, or it will be completely ignored; in the very least,
1246 /// this is a formalization for deprecating enum values.
1247 #[prost(bool, optional, tag = "1", default = "false")]
1248 pub deprecated: ::core::option::Option<bool>,
1249 /// Any features defined in the specific edition.
1250 /// WARNING: This field should only be used by protobuf plugins or special
1251 /// cases like the proto compiler. Other uses are discouraged and
1252 /// developers should rely on the protoreflect APIs for their client language.
1253 #[prost(message, optional, tag = "2")]
1254 pub features: ::core::option::Option<FeatureSet>,
1255 /// Indicate that fields annotated with this enum value should not be printed
1256 /// out when using debug formats, e.g. when the field contains sensitive
1257 /// credentials.
1258 #[prost(bool, optional, tag = "3", default = "false")]
1259 pub debug_redact: ::core::option::Option<bool>,
1260 /// Information about the support window of a feature value.
1261 #[prost(message, optional, tag = "4")]
1262 pub feature_support: ::core::option::Option<field_options::FeatureSupport>,
1263 /// The parser stores options it doesn't recognize here. See above.
1264 #[prost(message, repeated, tag = "999")]
1265 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
1266}
1267#[derive(Clone, PartialEq, ::prost::Message)]
1268pub struct ServiceOptions {
1269 /// Any features defined in the specific edition.
1270 /// WARNING: This field should only be used by protobuf plugins or special
1271 /// cases like the proto compiler. Other uses are discouraged and
1272 /// developers should rely on the protoreflect APIs for their client language.
1273 #[prost(message, optional, tag = "34")]
1274 pub features: ::core::option::Option<FeatureSet>,
1275 /// Is this service deprecated?
1276 /// Depending on the target platform, this can emit Deprecated annotations
1277 /// for the service, or it will be completely ignored; in the very least,
1278 /// this is a formalization for deprecating services.
1279 #[prost(bool, optional, tag = "33", default = "false")]
1280 pub deprecated: ::core::option::Option<bool>,
1281 /// The parser stores options it doesn't recognize here. See above.
1282 #[prost(message, repeated, tag = "999")]
1283 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
1284}
1285#[derive(Clone, PartialEq, ::prost::Message)]
1286pub struct MethodOptions {
1287 /// Is this method deprecated?
1288 /// Depending on the target platform, this can emit Deprecated annotations
1289 /// for the method, or it will be completely ignored; in the very least,
1290 /// this is a formalization for deprecating methods.
1291 #[prost(bool, optional, tag = "33", default = "false")]
1292 pub deprecated: ::core::option::Option<bool>,
1293 #[prost(
1294 enumeration = "method_options::IdempotencyLevel",
1295 optional,
1296 tag = "34",
1297 default = "IdempotencyUnknown"
1298 )]
1299 pub idempotency_level: ::core::option::Option<i32>,
1300 /// Any features defined in the specific edition.
1301 /// WARNING: This field should only be used by protobuf plugins or special
1302 /// cases like the proto compiler. Other uses are discouraged and
1303 /// developers should rely on the protoreflect APIs for their client language.
1304 #[prost(message, optional, tag = "35")]
1305 pub features: ::core::option::Option<FeatureSet>,
1306 /// The parser stores options it doesn't recognize here. See above.
1307 #[prost(message, repeated, tag = "999")]
1308 pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
1309}
1310/// Nested message and enum types in `MethodOptions`.
1311pub mod method_options {
1312 /// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
1313 /// or neither? HTTP based RPC implementation may choose GET verb for safe
1314 /// methods, and PUT verb for idempotent methods instead of the default POST.
1315 #[derive(
1316 Clone,
1317 Copy,
1318 Debug,
1319 PartialEq,
1320 Eq,
1321 Hash,
1322 PartialOrd,
1323 Ord,
1324 ::prost::Enumeration
1325 )]
1326 #[repr(i32)]
1327 pub enum IdempotencyLevel {
1328 IdempotencyUnknown = 0,
1329 /// implies idempotent
1330 NoSideEffects = 1,
1331 /// idempotent, but may have side effects
1332 Idempotent = 2,
1333 }
1334 impl IdempotencyLevel {
1335 /// String value of the enum field names used in the ProtoBuf definition.
1336 ///
1337 /// The values are not transformed in any way and thus are considered stable
1338 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1339 pub fn as_str_name(&self) -> &'static str {
1340 match self {
1341 Self::IdempotencyUnknown => "IDEMPOTENCY_UNKNOWN",
1342 Self::NoSideEffects => "NO_SIDE_EFFECTS",
1343 Self::Idempotent => "IDEMPOTENT",
1344 }
1345 }
1346 /// Creates an enum from field names used in the ProtoBuf definition.
1347 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1348 match value {
1349 "IDEMPOTENCY_UNKNOWN" => Some(Self::IdempotencyUnknown),
1350 "NO_SIDE_EFFECTS" => Some(Self::NoSideEffects),
1351 "IDEMPOTENT" => Some(Self::Idempotent),
1352 _ => None,
1353 }
1354 }
1355 }
1356}
1357/// A message representing a option the parser does not recognize. This only
1358/// appears in options protos created by the compiler::Parser class.
1359/// DescriptorPool resolves these when building Descriptor objects. Therefore,
1360/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
1361/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
1362/// in them.
1363#[derive(Clone, PartialEq, ::prost::Message)]
1364pub struct UninterpretedOption {
1365 #[prost(message, repeated, tag = "2")]
1366 pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
1367 /// The value of the uninterpreted option, in whatever type the tokenizer
1368 /// identified it as during parsing. Exactly one of these should be set.
1369 #[prost(string, optional, tag = "3")]
1370 pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
1371 #[prost(uint64, optional, tag = "4")]
1372 pub positive_int_value: ::core::option::Option<u64>,
1373 #[prost(int64, optional, tag = "5")]
1374 pub negative_int_value: ::core::option::Option<i64>,
1375 #[prost(double, optional, tag = "6")]
1376 pub double_value: ::core::option::Option<f64>,
1377 #[prost(bytes = "vec", optional, tag = "7")]
1378 pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1379 #[prost(string, optional, tag = "8")]
1380 pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
1381}
1382/// Nested message and enum types in `UninterpretedOption`.
1383pub mod uninterpreted_option {
1384 /// The name of the uninterpreted option. Each string represents a segment in
1385 /// a dot-separated name. is_extension is true iff a segment represents an
1386 /// extension (denoted with parentheses in options specs in .proto files).
1387 /// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents
1388 /// "foo.(bar.baz).moo".
1389 #[derive(Clone, PartialEq, ::prost::Message)]
1390 pub struct NamePart {
1391 #[prost(string, required, tag = "1")]
1392 pub name_part: ::prost::alloc::string::String,
1393 #[prost(bool, required, tag = "2")]
1394 pub is_extension: bool,
1395 }
1396}
1397/// TODO Enums in C++ gencode (and potentially other languages) are
1398/// not well scoped. This means that each of the feature enums below can clash
1399/// with each other. The short names we've chosen maximize call-site
1400/// readability, but leave us very open to this scenario. A future feature will
1401/// be designed and implemented to handle this, hopefully before we ever hit a
1402/// conflict here.
1403#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1404pub struct FeatureSet {
1405 #[prost(enumeration = "feature_set::FieldPresence", optional, tag = "1")]
1406 pub field_presence: ::core::option::Option<i32>,
1407 #[prost(enumeration = "feature_set::EnumType", optional, tag = "2")]
1408 pub enum_type: ::core::option::Option<i32>,
1409 #[prost(enumeration = "feature_set::RepeatedFieldEncoding", optional, tag = "3")]
1410 pub repeated_field_encoding: ::core::option::Option<i32>,
1411 #[prost(enumeration = "feature_set::Utf8Validation", optional, tag = "4")]
1412 pub utf8_validation: ::core::option::Option<i32>,
1413 #[prost(enumeration = "feature_set::MessageEncoding", optional, tag = "5")]
1414 pub message_encoding: ::core::option::Option<i32>,
1415 #[prost(enumeration = "feature_set::JsonFormat", optional, tag = "6")]
1416 pub json_format: ::core::option::Option<i32>,
1417 #[prost(enumeration = "feature_set::EnforceNamingStyle", optional, tag = "7")]
1418 pub enforce_naming_style: ::core::option::Option<i32>,
1419 #[prost(
1420 enumeration = "feature_set::visibility_feature::DefaultSymbolVisibility",
1421 optional,
1422 tag = "8"
1423 )]
1424 pub default_symbol_visibility: ::core::option::Option<i32>,
1425}
1426/// Nested message and enum types in `FeatureSet`.
1427pub mod feature_set {
1428 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1429 pub struct VisibilityFeature {}
1430 /// Nested message and enum types in `VisibilityFeature`.
1431 pub mod visibility_feature {
1432 #[derive(
1433 Clone,
1434 Copy,
1435 Debug,
1436 PartialEq,
1437 Eq,
1438 Hash,
1439 PartialOrd,
1440 Ord,
1441 ::prost::Enumeration
1442 )]
1443 #[repr(i32)]
1444 pub enum DefaultSymbolVisibility {
1445 Unknown = 0,
1446 /// Default pre-EDITION_2024, all UNSET visibility are export.
1447 ExportAll = 1,
1448 /// All top-level symbols default to export, nested default to local.
1449 ExportTopLevel = 2,
1450 /// All symbols default to local.
1451 LocalAll = 3,
1452 /// All symbols local by default. Nested types cannot be exported.
1453 /// With special case caveat for message { enum {} reserved 1 to max; }
1454 /// This is the recommended setting for new protos.
1455 Strict = 4,
1456 }
1457 impl DefaultSymbolVisibility {
1458 /// String value of the enum field names used in the ProtoBuf definition.
1459 ///
1460 /// The values are not transformed in any way and thus are considered stable
1461 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1462 pub fn as_str_name(&self) -> &'static str {
1463 match self {
1464 Self::Unknown => "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",
1465 Self::ExportAll => "EXPORT_ALL",
1466 Self::ExportTopLevel => "EXPORT_TOP_LEVEL",
1467 Self::LocalAll => "LOCAL_ALL",
1468 Self::Strict => "STRICT",
1469 }
1470 }
1471 /// Creates an enum from field names used in the ProtoBuf definition.
1472 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1473 match value {
1474 "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN" => Some(Self::Unknown),
1475 "EXPORT_ALL" => Some(Self::ExportAll),
1476 "EXPORT_TOP_LEVEL" => Some(Self::ExportTopLevel),
1477 "LOCAL_ALL" => Some(Self::LocalAll),
1478 "STRICT" => Some(Self::Strict),
1479 _ => None,
1480 }
1481 }
1482 }
1483 }
1484 #[derive(
1485 Clone,
1486 Copy,
1487 Debug,
1488 PartialEq,
1489 Eq,
1490 Hash,
1491 PartialOrd,
1492 Ord,
1493 ::prost::Enumeration
1494 )]
1495 #[repr(i32)]
1496 pub enum FieldPresence {
1497 Unknown = 0,
1498 Explicit = 1,
1499 Implicit = 2,
1500 LegacyRequired = 3,
1501 }
1502 impl FieldPresence {
1503 /// String value of the enum field names used in the ProtoBuf definition.
1504 ///
1505 /// The values are not transformed in any way and thus are considered stable
1506 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1507 pub fn as_str_name(&self) -> &'static str {
1508 match self {
1509 Self::Unknown => "FIELD_PRESENCE_UNKNOWN",
1510 Self::Explicit => "EXPLICIT",
1511 Self::Implicit => "IMPLICIT",
1512 Self::LegacyRequired => "LEGACY_REQUIRED",
1513 }
1514 }
1515 /// Creates an enum from field names used in the ProtoBuf definition.
1516 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1517 match value {
1518 "FIELD_PRESENCE_UNKNOWN" => Some(Self::Unknown),
1519 "EXPLICIT" => Some(Self::Explicit),
1520 "IMPLICIT" => Some(Self::Implicit),
1521 "LEGACY_REQUIRED" => Some(Self::LegacyRequired),
1522 _ => None,
1523 }
1524 }
1525 }
1526 #[derive(
1527 Clone,
1528 Copy,
1529 Debug,
1530 PartialEq,
1531 Eq,
1532 Hash,
1533 PartialOrd,
1534 Ord,
1535 ::prost::Enumeration
1536 )]
1537 #[repr(i32)]
1538 pub enum EnumType {
1539 Unknown = 0,
1540 Open = 1,
1541 Closed = 2,
1542 }
1543 impl EnumType {
1544 /// String value of the enum field names used in the ProtoBuf definition.
1545 ///
1546 /// The values are not transformed in any way and thus are considered stable
1547 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1548 pub fn as_str_name(&self) -> &'static str {
1549 match self {
1550 Self::Unknown => "ENUM_TYPE_UNKNOWN",
1551 Self::Open => "OPEN",
1552 Self::Closed => "CLOSED",
1553 }
1554 }
1555 /// Creates an enum from field names used in the ProtoBuf definition.
1556 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1557 match value {
1558 "ENUM_TYPE_UNKNOWN" => Some(Self::Unknown),
1559 "OPEN" => Some(Self::Open),
1560 "CLOSED" => Some(Self::Closed),
1561 _ => None,
1562 }
1563 }
1564 }
1565 #[derive(
1566 Clone,
1567 Copy,
1568 Debug,
1569 PartialEq,
1570 Eq,
1571 Hash,
1572 PartialOrd,
1573 Ord,
1574 ::prost::Enumeration
1575 )]
1576 #[repr(i32)]
1577 pub enum RepeatedFieldEncoding {
1578 Unknown = 0,
1579 Packed = 1,
1580 Expanded = 2,
1581 }
1582 impl RepeatedFieldEncoding {
1583 /// String value of the enum field names used in the ProtoBuf definition.
1584 ///
1585 /// The values are not transformed in any way and thus are considered stable
1586 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1587 pub fn as_str_name(&self) -> &'static str {
1588 match self {
1589 Self::Unknown => "REPEATED_FIELD_ENCODING_UNKNOWN",
1590 Self::Packed => "PACKED",
1591 Self::Expanded => "EXPANDED",
1592 }
1593 }
1594 /// Creates an enum from field names used in the ProtoBuf definition.
1595 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1596 match value {
1597 "REPEATED_FIELD_ENCODING_UNKNOWN" => Some(Self::Unknown),
1598 "PACKED" => Some(Self::Packed),
1599 "EXPANDED" => Some(Self::Expanded),
1600 _ => None,
1601 }
1602 }
1603 }
1604 #[derive(
1605 Clone,
1606 Copy,
1607 Debug,
1608 PartialEq,
1609 Eq,
1610 Hash,
1611 PartialOrd,
1612 Ord,
1613 ::prost::Enumeration
1614 )]
1615 #[repr(i32)]
1616 pub enum Utf8Validation {
1617 Unknown = 0,
1618 Verify = 2,
1619 None = 3,
1620 }
1621 impl Utf8Validation {
1622 /// String value of the enum field names used in the ProtoBuf definition.
1623 ///
1624 /// The values are not transformed in any way and thus are considered stable
1625 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1626 pub fn as_str_name(&self) -> &'static str {
1627 match self {
1628 Self::Unknown => "UTF8_VALIDATION_UNKNOWN",
1629 Self::Verify => "VERIFY",
1630 Self::None => "NONE",
1631 }
1632 }
1633 /// Creates an enum from field names used in the ProtoBuf definition.
1634 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1635 match value {
1636 "UTF8_VALIDATION_UNKNOWN" => Some(Self::Unknown),
1637 "VERIFY" => Some(Self::Verify),
1638 "NONE" => Some(Self::None),
1639 _ => None,
1640 }
1641 }
1642 }
1643 #[derive(
1644 Clone,
1645 Copy,
1646 Debug,
1647 PartialEq,
1648 Eq,
1649 Hash,
1650 PartialOrd,
1651 Ord,
1652 ::prost::Enumeration
1653 )]
1654 #[repr(i32)]
1655 pub enum MessageEncoding {
1656 Unknown = 0,
1657 LengthPrefixed = 1,
1658 Delimited = 2,
1659 }
1660 impl MessageEncoding {
1661 /// String value of the enum field names used in the ProtoBuf definition.
1662 ///
1663 /// The values are not transformed in any way and thus are considered stable
1664 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1665 pub fn as_str_name(&self) -> &'static str {
1666 match self {
1667 Self::Unknown => "MESSAGE_ENCODING_UNKNOWN",
1668 Self::LengthPrefixed => "LENGTH_PREFIXED",
1669 Self::Delimited => "DELIMITED",
1670 }
1671 }
1672 /// Creates an enum from field names used in the ProtoBuf definition.
1673 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1674 match value {
1675 "MESSAGE_ENCODING_UNKNOWN" => Some(Self::Unknown),
1676 "LENGTH_PREFIXED" => Some(Self::LengthPrefixed),
1677 "DELIMITED" => Some(Self::Delimited),
1678 _ => None,
1679 }
1680 }
1681 }
1682 #[derive(
1683 Clone,
1684 Copy,
1685 Debug,
1686 PartialEq,
1687 Eq,
1688 Hash,
1689 PartialOrd,
1690 Ord,
1691 ::prost::Enumeration
1692 )]
1693 #[repr(i32)]
1694 pub enum JsonFormat {
1695 Unknown = 0,
1696 Allow = 1,
1697 LegacyBestEffort = 2,
1698 }
1699 impl JsonFormat {
1700 /// String value of the enum field names used in the ProtoBuf definition.
1701 ///
1702 /// The values are not transformed in any way and thus are considered stable
1703 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1704 pub fn as_str_name(&self) -> &'static str {
1705 match self {
1706 Self::Unknown => "JSON_FORMAT_UNKNOWN",
1707 Self::Allow => "ALLOW",
1708 Self::LegacyBestEffort => "LEGACY_BEST_EFFORT",
1709 }
1710 }
1711 /// Creates an enum from field names used in the ProtoBuf definition.
1712 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1713 match value {
1714 "JSON_FORMAT_UNKNOWN" => Some(Self::Unknown),
1715 "ALLOW" => Some(Self::Allow),
1716 "LEGACY_BEST_EFFORT" => Some(Self::LegacyBestEffort),
1717 _ => None,
1718 }
1719 }
1720 }
1721 #[derive(
1722 Clone,
1723 Copy,
1724 Debug,
1725 PartialEq,
1726 Eq,
1727 Hash,
1728 PartialOrd,
1729 Ord,
1730 ::prost::Enumeration
1731 )]
1732 #[repr(i32)]
1733 pub enum EnforceNamingStyle {
1734 Unknown = 0,
1735 Style2024 = 1,
1736 StyleLegacy = 2,
1737 }
1738 impl EnforceNamingStyle {
1739 /// String value of the enum field names used in the ProtoBuf definition.
1740 ///
1741 /// The values are not transformed in any way and thus are considered stable
1742 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1743 pub fn as_str_name(&self) -> &'static str {
1744 match self {
1745 Self::Unknown => "ENFORCE_NAMING_STYLE_UNKNOWN",
1746 Self::Style2024 => "STYLE2024",
1747 Self::StyleLegacy => "STYLE_LEGACY",
1748 }
1749 }
1750 /// Creates an enum from field names used in the ProtoBuf definition.
1751 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1752 match value {
1753 "ENFORCE_NAMING_STYLE_UNKNOWN" => Some(Self::Unknown),
1754 "STYLE2024" => Some(Self::Style2024),
1755 "STYLE_LEGACY" => Some(Self::StyleLegacy),
1756 _ => None,
1757 }
1758 }
1759 }
1760}
1761/// A compiled specification for the defaults of a set of features. These
1762/// messages are generated from FeatureSet extensions and can be used to seed
1763/// feature resolution. The resolution with this object becomes a simple search
1764/// for the closest matching edition, followed by proto merges.
1765#[derive(Clone, PartialEq, ::prost::Message)]
1766pub struct FeatureSetDefaults {
1767 #[prost(message, repeated, tag = "1")]
1768 pub defaults: ::prost::alloc::vec::Vec<
1769 feature_set_defaults::FeatureSetEditionDefault,
1770 >,
1771 /// The minimum supported edition (inclusive) when this was constructed.
1772 /// Editions before this will not have defaults.
1773 #[prost(enumeration = "Edition", optional, tag = "4")]
1774 pub minimum_edition: ::core::option::Option<i32>,
1775 /// The maximum known edition (inclusive) when this was constructed. Editions
1776 /// after this will not have reliable defaults.
1777 #[prost(enumeration = "Edition", optional, tag = "5")]
1778 pub maximum_edition: ::core::option::Option<i32>,
1779}
1780/// Nested message and enum types in `FeatureSetDefaults`.
1781pub mod feature_set_defaults {
1782 /// A map from every known edition with a unique set of defaults to its
1783 /// defaults. Not all editions may be contained here. For a given edition,
1784 /// the defaults at the closest matching edition ordered at or before it should
1785 /// be used. This field must be in strict ascending order by edition.
1786 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1787 pub struct FeatureSetEditionDefault {
1788 #[prost(enumeration = "super::Edition", optional, tag = "3")]
1789 pub edition: ::core::option::Option<i32>,
1790 /// Defaults of features that can be overridden in this edition.
1791 #[prost(message, optional, tag = "4")]
1792 pub overridable_features: ::core::option::Option<super::FeatureSet>,
1793 /// Defaults of features that can't be overridden in this edition.
1794 #[prost(message, optional, tag = "5")]
1795 pub fixed_features: ::core::option::Option<super::FeatureSet>,
1796 }
1797}
1798/// Encapsulates information about the original source file from which a
1799/// FileDescriptorProto was generated.
1800#[derive(Clone, PartialEq, ::prost::Message)]
1801pub struct SourceCodeInfo {
1802 /// A Location identifies a piece of source code in a .proto file which
1803 /// corresponds to a particular definition. This information is intended
1804 /// to be useful to IDEs, code indexers, documentation generators, and similar
1805 /// tools.
1806 ///
1807 /// For example, say we have a file like:
1808 /// message Foo {
1809 /// optional string foo = 1;
1810 /// }
1811 /// Let's look at just the field definition:
1812 /// optional string foo = 1;
1813 /// ^ ^^ ^^ ^ ^^^
1814 /// a bc de f ghi
1815 /// We have the following locations:
1816 /// span path represents
1817 /// \[a,i) [ 4, 0, 2, 0 \] The whole field definition.
1818 /// \[a,b) [ 4, 0, 2, 0, 4 \] The label (optional).
1819 /// \[c,d) [ 4, 0, 2, 0, 5 \] The type (string).
1820 /// \[e,f) [ 4, 0, 2, 0, 1 \] The name (foo).
1821 /// \[g,h) [ 4, 0, 2, 0, 3 \] The number (1).
1822 ///
1823 /// Notes:
1824 /// - A location may refer to a repeated field itself (i.e. not to any
1825 /// particular index within it). This is used whenever a set of elements are
1826 /// logically enclosed in a single code segment. For example, an entire
1827 /// extend block (possibly containing multiple extension definitions) will
1828 /// have an outer location whose path refers to the "extensions" repeated
1829 /// field without an index.
1830 /// - Multiple locations may have the same path. This happens when a single
1831 /// logical declaration is spread out across multiple places. The most
1832 /// obvious example is the "extend" block again -- there may be multiple
1833 /// extend blocks in the same scope, each of which will have the same path.
1834 /// - A location's span is not always a subset of its parent's span. For
1835 /// example, the "extendee" of an extension declaration appears at the
1836 /// beginning of the "extend" block and is shared by all extensions within
1837 /// the block.
1838 /// - Just because a location's span is a subset of some other location's span
1839 /// does not mean that it is a descendant. For example, a "group" defines
1840 /// both a type and a field in a single declaration. Thus, the locations
1841 /// corresponding to the type and field and their components will overlap.
1842 /// - Code which tries to interpret locations should probably be designed to
1843 /// ignore those that it doesn't understand, as more types of locations could
1844 /// be recorded in the future.
1845 #[prost(message, repeated, tag = "1")]
1846 pub location: ::prost::alloc::vec::Vec<source_code_info::Location>,
1847}
1848/// Nested message and enum types in `SourceCodeInfo`.
1849pub mod source_code_info {
1850 #[derive(Clone, PartialEq, ::prost::Message)]
1851 pub struct Location {
1852 /// Identifies which part of the FileDescriptorProto was defined at this
1853 /// location.
1854 ///
1855 /// Each element is a field number or an index. They form a path from
1856 /// the root FileDescriptorProto to the place where the definition appears.
1857 /// For example, this path:
1858 /// \[ 4, 3, 2, 7, 1 \]
1859 /// refers to:
1860 /// file.message_type(3) // 4, 3
1861 /// .field(7) // 2, 7
1862 /// .name() // 1
1863 /// This is because FileDescriptorProto.message_type has field number 4:
1864 /// repeated DescriptorProto message_type = 4;
1865 /// and DescriptorProto.field has field number 2:
1866 /// repeated FieldDescriptorProto field = 2;
1867 /// and FieldDescriptorProto.name has field number 1:
1868 /// optional string name = 1;
1869 ///
1870 /// Thus, the above path gives the location of a field name. If we removed
1871 /// the last element:
1872 /// \[ 4, 3, 2, 7 \]
1873 /// this path refers to the whole field declaration (from the beginning
1874 /// of the label to the terminating semicolon).
1875 #[prost(int32, repeated, tag = "1")]
1876 pub path: ::prost::alloc::vec::Vec<i32>,
1877 /// Always has exactly three or four elements: start line, start column,
1878 /// end line (optional, otherwise assumed same as start line), end column.
1879 /// These are packed into a single field for efficiency. Note that line
1880 /// and column numbers are zero-based -- typically you will want to add
1881 /// 1 to each before displaying to a user.
1882 #[prost(int32, repeated, tag = "2")]
1883 pub span: ::prost::alloc::vec::Vec<i32>,
1884 /// If this SourceCodeInfo represents a complete declaration, these are any
1885 /// comments appearing before and after the declaration which appear to be
1886 /// attached to the declaration.
1887 ///
1888 /// A series of line comments appearing on consecutive lines, with no other
1889 /// tokens appearing on those lines, will be treated as a single comment.
1890 ///
1891 /// leading_detached_comments will keep paragraphs of comments that appear
1892 /// before (but not connected to) the current element. Each paragraph,
1893 /// separated by empty lines, will be one comment element in the repeated
1894 /// field.
1895 ///
1896 /// Only the comment content is provided; comment markers (e.g. //) are
1897 /// stripped out. For block comments, leading whitespace and an asterisk
1898 /// will be stripped from the beginning of each line other than the first.
1899 /// Newlines are included in the output.
1900 ///
1901 /// Examples:
1902 ///
1903 /// optional int32 foo = 1; // Comment attached to foo.
1904 /// // Comment attached to bar.
1905 /// optional int32 bar = 2;
1906 ///
1907 /// optional string baz = 3;
1908 /// // Comment attached to baz.
1909 /// // Another line attached to baz.
1910 ///
1911 /// // Comment attached to moo.
1912 /// //
1913 /// // Another line attached to moo.
1914 /// optional double moo = 4;
1915 ///
1916 /// // Detached comment for corge. This is not leading or trailing comments
1917 /// // to moo or corge because there are blank lines separating it from
1918 /// // both.
1919 ///
1920 /// // Detached comment for corge paragraph 2.
1921 ///
1922 /// optional string corge = 5;
1923 /// /* Block comment attached
1924 /// * to corge. Leading asterisks
1925 /// * will be removed. */
1926 /// /* Block comment attached to
1927 /// * grault. */
1928 /// optional int32 grault = 6;
1929 ///
1930 /// // ignored detached comments.
1931 #[prost(string, optional, tag = "3")]
1932 pub leading_comments: ::core::option::Option<::prost::alloc::string::String>,
1933 #[prost(string, optional, tag = "4")]
1934 pub trailing_comments: ::core::option::Option<::prost::alloc::string::String>,
1935 #[prost(string, repeated, tag = "6")]
1936 pub leading_detached_comments: ::prost::alloc::vec::Vec<
1937 ::prost::alloc::string::String,
1938 >,
1939 }
1940}
1941/// Describes the relationship between generated code and its original source
1942/// file. A GeneratedCodeInfo message is associated with only one generated
1943/// source file, but may contain references to different source .proto files.
1944#[derive(Clone, PartialEq, ::prost::Message)]
1945pub struct GeneratedCodeInfo {
1946 /// An Annotation connects some span of text in generated code to an element
1947 /// of its generating .proto file.
1948 #[prost(message, repeated, tag = "1")]
1949 pub annotation: ::prost::alloc::vec::Vec<generated_code_info::Annotation>,
1950}
1951/// Nested message and enum types in `GeneratedCodeInfo`.
1952pub mod generated_code_info {
1953 #[derive(Clone, PartialEq, ::prost::Message)]
1954 pub struct Annotation {
1955 /// Identifies the element in the original source .proto file. This field
1956 /// is formatted the same as SourceCodeInfo.Location.path.
1957 #[prost(int32, repeated, tag = "1")]
1958 pub path: ::prost::alloc::vec::Vec<i32>,
1959 /// Identifies the filesystem path to the original source .proto.
1960 #[prost(string, optional, tag = "2")]
1961 pub source_file: ::core::option::Option<::prost::alloc::string::String>,
1962 /// Identifies the starting offset in bytes in the generated code
1963 /// that relates to the identified object.
1964 #[prost(int32, optional, tag = "3")]
1965 pub begin: ::core::option::Option<i32>,
1966 /// Identifies the ending offset in bytes in the generated code that
1967 /// relates to the identified object. The end offset should be one past
1968 /// the last relevant byte (so the length of the text = end - begin).
1969 #[prost(int32, optional, tag = "4")]
1970 pub end: ::core::option::Option<i32>,
1971 #[prost(enumeration = "annotation::Semantic", optional, tag = "5")]
1972 pub semantic: ::core::option::Option<i32>,
1973 }
1974 /// Nested message and enum types in `Annotation`.
1975 pub mod annotation {
1976 /// Represents the identified object's effect on the element in the original
1977 /// .proto file.
1978 #[derive(
1979 Clone,
1980 Copy,
1981 Debug,
1982 PartialEq,
1983 Eq,
1984 Hash,
1985 PartialOrd,
1986 Ord,
1987 ::prost::Enumeration
1988 )]
1989 #[repr(i32)]
1990 pub enum Semantic {
1991 /// There is no effect or the effect is indescribable.
1992 None = 0,
1993 /// The element is set or otherwise mutated.
1994 Set = 1,
1995 /// An alias to the element is returned.
1996 Alias = 2,
1997 }
1998 impl Semantic {
1999 /// String value of the enum field names used in the ProtoBuf definition.
2000 ///
2001 /// The values are not transformed in any way and thus are considered stable
2002 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2003 pub fn as_str_name(&self) -> &'static str {
2004 match self {
2005 Self::None => "NONE",
2006 Self::Set => "SET",
2007 Self::Alias => "ALIAS",
2008 }
2009 }
2010 /// Creates an enum from field names used in the ProtoBuf definition.
2011 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2012 match value {
2013 "NONE" => Some(Self::None),
2014 "SET" => Some(Self::Set),
2015 "ALIAS" => Some(Self::Alias),
2016 _ => None,
2017 }
2018 }
2019 }
2020 }
2021}
2022/// The full set of known editions.
2023#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2024#[repr(i32)]
2025pub enum Edition {
2026 /// A placeholder for an unknown edition value.
2027 Unknown = 0,
2028 /// A placeholder edition for specifying default behaviors *before* a feature
2029 /// was first introduced. This is effectively an "infinite past".
2030 Legacy = 900,
2031 /// Legacy syntax "editions". These pre-date editions, but behave much like
2032 /// distinct editions. These can't be used to specify the edition of proto
2033 /// files, but feature definitions must supply proto2/proto3 defaults for
2034 /// backwards compatibility.
2035 Proto2 = 998,
2036 Proto3 = 999,
2037 /// Editions that have been released. The specific values are arbitrary and
2038 /// should not be depended on, but they will always be time-ordered for easy
2039 /// comparison.
2040 Edition2023 = 1000,
2041 Edition2024 = 1001,
2042 /// Placeholder editions for testing feature resolution. These should not be
2043 /// used or relied on outside of tests.
2044 Edition1TestOnly = 1,
2045 Edition2TestOnly = 2,
2046 Edition99997TestOnly = 99997,
2047 Edition99998TestOnly = 99998,
2048 Edition99999TestOnly = 99999,
2049 /// Placeholder for specifying unbounded edition support. This should only
2050 /// ever be used by plugins that can expect to never require any changes to
2051 /// support a new edition.
2052 Max = 2147483647,
2053}
2054impl Edition {
2055 /// String value of the enum field names used in the ProtoBuf definition.
2056 ///
2057 /// The values are not transformed in any way and thus are considered stable
2058 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2059 pub fn as_str_name(&self) -> &'static str {
2060 match self {
2061 Self::Unknown => "EDITION_UNKNOWN",
2062 Self::Legacy => "EDITION_LEGACY",
2063 Self::Proto2 => "EDITION_PROTO2",
2064 Self::Proto3 => "EDITION_PROTO3",
2065 Self::Edition2023 => "EDITION_2023",
2066 Self::Edition2024 => "EDITION_2024",
2067 Self::Edition1TestOnly => "EDITION_1_TEST_ONLY",
2068 Self::Edition2TestOnly => "EDITION_2_TEST_ONLY",
2069 Self::Edition99997TestOnly => "EDITION_99997_TEST_ONLY",
2070 Self::Edition99998TestOnly => "EDITION_99998_TEST_ONLY",
2071 Self::Edition99999TestOnly => "EDITION_99999_TEST_ONLY",
2072 Self::Max => "EDITION_MAX",
2073 }
2074 }
2075 /// Creates an enum from field names used in the ProtoBuf definition.
2076 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2077 match value {
2078 "EDITION_UNKNOWN" => Some(Self::Unknown),
2079 "EDITION_LEGACY" => Some(Self::Legacy),
2080 "EDITION_PROTO2" => Some(Self::Proto2),
2081 "EDITION_PROTO3" => Some(Self::Proto3),
2082 "EDITION_2023" => Some(Self::Edition2023),
2083 "EDITION_2024" => Some(Self::Edition2024),
2084 "EDITION_1_TEST_ONLY" => Some(Self::Edition1TestOnly),
2085 "EDITION_2_TEST_ONLY" => Some(Self::Edition2TestOnly),
2086 "EDITION_99997_TEST_ONLY" => Some(Self::Edition99997TestOnly),
2087 "EDITION_99998_TEST_ONLY" => Some(Self::Edition99998TestOnly),
2088 "EDITION_99999_TEST_ONLY" => Some(Self::Edition99999TestOnly),
2089 "EDITION_MAX" => Some(Self::Max),
2090 _ => None,
2091 }
2092 }
2093}
2094/// Describes the 'visibility' of a symbol with respect to the proto import
2095/// system. Symbols can only be imported when the visibility rules do not prevent
2096/// it (ex: local symbols cannot be imported). Visibility modifiers can only set
2097/// on `message` and `enum` as they are the only types available to be referenced
2098/// from other files.
2099#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2100#[repr(i32)]
2101pub enum SymbolVisibility {
2102 VisibilityUnset = 0,
2103 VisibilityLocal = 1,
2104 VisibilityExport = 2,
2105}
2106impl SymbolVisibility {
2107 /// String value of the enum field names used in the ProtoBuf definition.
2108 ///
2109 /// The values are not transformed in any way and thus are considered stable
2110 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2111 pub fn as_str_name(&self) -> &'static str {
2112 match self {
2113 Self::VisibilityUnset => "VISIBILITY_UNSET",
2114 Self::VisibilityLocal => "VISIBILITY_LOCAL",
2115 Self::VisibilityExport => "VISIBILITY_EXPORT",
2116 }
2117 }
2118 /// Creates an enum from field names used in the ProtoBuf definition.
2119 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2120 match value {
2121 "VISIBILITY_UNSET" => Some(Self::VisibilityUnset),
2122 "VISIBILITY_LOCAL" => Some(Self::VisibilityLocal),
2123 "VISIBILITY_EXPORT" => Some(Self::VisibilityExport),
2124 _ => None,
2125 }
2126 }
2127}
2128/// A Duration represents a signed, fixed-length span of time represented
2129/// as a count of seconds and fractions of seconds at nanosecond
2130/// resolution. It is independent of any calendar and concepts like "day"
2131/// or "month". It is related to Timestamp in that the difference between
2132/// two Timestamp values is a Duration and it can be added or subtracted
2133/// from a Timestamp. Range is approximately +-10,000 years.
2134///
2135/// # Examples
2136///
2137/// Example 1: Compute Duration from two Timestamps in pseudo code.
2138///
2139/// Timestamp start = ...;
2140/// Timestamp end = ...;
2141/// Duration duration = ...;
2142///
2143/// duration.seconds = end.seconds - start.seconds;
2144/// duration.nanos = end.nanos - start.nanos;
2145///
2146/// if (duration.seconds < 0 && duration.nanos > 0) {
2147/// duration.seconds += 1;
2148/// duration.nanos -= 1000000000;
2149/// } else if (duration.seconds > 0 && duration.nanos < 0) {
2150/// duration.seconds -= 1;
2151/// duration.nanos += 1000000000;
2152/// }
2153///
2154/// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
2155///
2156/// Timestamp start = ...;
2157/// Duration duration = ...;
2158/// Timestamp end = ...;
2159///
2160/// end.seconds = start.seconds + duration.seconds;
2161/// end.nanos = start.nanos + duration.nanos;
2162///
2163/// if (end.nanos < 0) {
2164/// end.seconds -= 1;
2165/// end.nanos += 1000000000;
2166/// } else if (end.nanos >= 1000000000) {
2167/// end.seconds += 1;
2168/// end.nanos -= 1000000000;
2169/// }
2170///
2171/// Example 3: Compute Duration from datetime.timedelta in Python.
2172///
2173/// td = datetime.timedelta(days=3, minutes=10)
2174/// duration = Duration()
2175/// duration.FromTimedelta(td)
2176///
2177/// # JSON Mapping
2178///
2179/// In JSON format, the Duration type is encoded as a string rather than an
2180/// object, where the string ends in the suffix "s" (indicating seconds) and
2181/// is preceded by the number of seconds, with nanoseconds expressed as
2182/// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
2183/// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
2184/// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
2185/// microsecond should be expressed in JSON format as "3.000001s".
2186///
2187#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2188pub struct Duration {
2189 /// Signed seconds of the span of time. Must be from -315,576,000,000
2190 /// to +315,576,000,000 inclusive. Note: these bounds are computed from:
2191 /// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
2192 #[prost(int64, tag = "1")]
2193 pub seconds: i64,
2194 /// Signed fractions of a second at nanosecond resolution of the span
2195 /// of time. Durations less than one second are represented with a 0
2196 /// `seconds` field and a positive or negative `nanos` field. For durations
2197 /// of one second or more, a non-zero value for the `nanos` field must be
2198 /// of the same sign as the `seconds` field. Must be from -999,999,999
2199 /// to +999,999,999 inclusive.
2200 #[prost(int32, tag = "2")]
2201 pub nanos: i32,
2202}
2203/// A generic empty message that you can re-use to avoid defining duplicated
2204/// empty messages in your APIs. A typical example is to use it as the request
2205/// or the response type of an API method. For instance:
2206///
2207/// service Foo {
2208/// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
2209/// }
2210///
2211#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2212pub struct Empty {}