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