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