Skip to main content

FileOptions

Struct FileOptions 

Source
pub struct FileOptions {
Show 21 fields pub java_package: Option<String>, pub java_outer_classname: Option<String>, pub java_multiple_files: Option<bool>, pub java_generate_equals_and_hash: Option<bool>, pub java_string_check_utf8: Option<bool>, pub optimize_for: Option<OptimizeMode>, pub go_package: Option<String>, pub cc_generic_services: Option<bool>, pub java_generic_services: Option<bool>, pub py_generic_services: Option<bool>, pub deprecated: Option<bool>, pub cc_enable_arenas: Option<bool>, pub objc_class_prefix: Option<String>, pub csharp_namespace: Option<String>, pub swift_prefix: Option<String>, pub php_class_prefix: Option<String>, pub php_namespace: Option<String>, pub php_metadata_namespace: Option<String>, pub ruby_package: Option<String>, pub features: MessageField<FeatureSet>, pub uninterpreted_option: Vec<UninterpretedOption>, /* private fields */
}
Expand description

=================================================================== Options

Each of the definitions above may have “options” attached. These are just annotations which may cause code to be generated slightly differently or may contain hints for code that manipulates protocol messages.

Clients may define custom options as extensions of the *Options messages. These extensions may not yet be known at parsing time, so the parser cannot store the values in them. Instead it stores them in a field in the *Options message called uninterpreted_option. This field must have the same name across all *Options messages. We then use this field to populate the extensions when we build a descriptor, at which point all protos have been parsed and so all extensions are known.

Extension numbers for custom options may be chosen as follows:

  • For options which will only be used within a single application or organization, or for experimental options, use field numbers 50000 through 99999. It is up to you to ensure that you do not use the same number for multiple options.
  • For options which will be published and used publicly by multiple independent entities, e-mail protobuf-global-extension-registry@google.com to reserve extension numbers. Simply provide your project name (e.g. Objective-C plugin) and your project website (if available) – there’s no need to explain how you intend to use them. Usually you only need one extension number. You can declare multiple options with only one extension number by putting them in a sub-message. See the Custom Options section of the docs for examples: https://developers.google.com/protocol-buffers/docs/proto#options If this turns out to be popular, a web service will be set up to automatically assign option numbers.

Fields§

§java_package: Option<String>

Sets the Java package where classes generated from this .proto will be placed. By default, the proto package is used, but this is often inappropriate because proto packages do not normally start with backwards domain names.

Field 1: java_package

§java_outer_classname: Option<String>

Controls the name of the wrapper Java class generated for the .proto file. That class will always contain the .proto file’s getDescriptor() method as well as any top-level extensions defined in the .proto file. If java_multiple_files is disabled, then all the other classes from the .proto file will be nested inside the single wrapper outer class.

Field 8: java_outer_classname

§java_multiple_files: Option<bool>

If enabled, then the Java code generator will generate a separate .java file for each top-level message, enum, and service defined in the .proto file. Thus, these types will not be nested inside the wrapper class named by java_outer_classname. However, the wrapper class will still be generated to contain the file’s getDescriptor() method as well as any top-level extensions defined in the file.

Field 10: java_multiple_files

§java_generate_equals_and_hash: Option<bool>

This option does nothing.

Field 20: java_generate_equals_and_hash

§java_string_check_utf8: Option<bool>

A proto2 file can set this to true to opt in to UTF-8 checking for Java, which will throw an exception if invalid UTF-8 is parsed from the wire or assigned to a string field.

TODO: clarify exactly what kinds of field types this option applies to, and update these docs accordingly.

Proto3 files already perform these checks. Setting the option explicitly to false has no effect: it cannot be used to opt proto3 files out of UTF-8 checks.

Field 27: java_string_check_utf8

§optimize_for: Option<OptimizeMode>

Field 9: optimize_for

§go_package: Option<String>

Sets the Go package where structs generated from this .proto will be placed. If omitted, the Go package will be derived from the following:

  • The basename of the package import path, if provided.
  • Otherwise, the package statement in the .proto file, if present.
  • Otherwise, the basename of the .proto file, without extension.

Field 11: go_package

§cc_generic_services: Option<bool>

Should generic services be generated in each language? “Generic” services are not specific to any particular RPC system. They are generated by the main code generators in each language (without additional plugins). Generic services were the only kind of service generation supported by early versions of google.protobuf.

Generic services are now considered deprecated in favor of using plugins that generate code specific to your particular RPC system. Therefore, these default to false. Old code which depends on generic services should explicitly set them to true.

Field 16: cc_generic_services

§java_generic_services: Option<bool>

Field 17: java_generic_services

§py_generic_services: Option<bool>

Field 18: py_generic_services

§deprecated: Option<bool>

Is this file deprecated? Depending on the target platform, this can emit Deprecated annotations for everything in the file, or it will be completely ignored; in the very least, this is a formalization for deprecating files.

Field 23: deprecated

§cc_enable_arenas: Option<bool>

Enables the use of arenas for the proto messages in this file. This applies only to generated classes for C++.

Field 31: cc_enable_arenas

§objc_class_prefix: Option<String>

Sets the objective c class prefix which is prepended to all objective c generated classes from this .proto. There is no default.

Field 36: objc_class_prefix

§csharp_namespace: Option<String>

Namespace for generated classes; defaults to the package.

Field 37: csharp_namespace

§swift_prefix: Option<String>

By default Swift generators will take the proto package and CamelCase it replacing ‘.’ with underscore and use that to prefix the types/symbols defined. When this options is provided, they will use this value instead to prefix the types/symbols defined.

Field 39: swift_prefix

§php_class_prefix: Option<String>

Sets the php class prefix which is prepended to all php generated classes from this .proto. Default is empty.

Field 40: php_class_prefix

§php_namespace: Option<String>

Use this option to change the namespace of php generated classes. Default is empty. When this option is empty, the package name will be used for determining the namespace.

Field 41: php_namespace

§php_metadata_namespace: Option<String>

Use this option to change the namespace of php generated metadata classes. Default is empty. When this option is empty, the proto file name will be used for determining the namespace.

Field 44: php_metadata_namespace

§ruby_package: Option<String>

Use this option to change the package of ruby generated classes. Default is empty. When this option is not set, the package name will be used for determining the ruby package.

Field 45: ruby_package

§features: MessageField<FeatureSet>

Any features defined in the specific edition. WARNING: This field should only be used by protobuf plugins or special cases like the proto compiler. Other uses are discouraged and developers should rely on the protoreflect APIs for their client language.

Field 50: features

§uninterpreted_option: Vec<UninterpretedOption>

The parser stores options it doesn’t recognize here. See the documentation for the “Options” section above.

Field 999: uninterpreted_option

Implementations§

Source§

impl FileOptions

Source

pub const TYPE_URL: &'static str = "type.googleapis.com/google.protobuf.FileOptions"

Protobuf type URL for this message, for use with Any::pack and Any::unpack_if.

Format: type.googleapis.com/<fully.qualified.TypeName>

Source§

impl FileOptions

Source

pub fn with_java_package(self, value: impl Into<String>) -> Self

Sets Self::java_package to Some(value), consuming and returning self.

Source

pub fn with_java_outer_classname(self, value: impl Into<String>) -> Self

Sets Self::java_outer_classname to Some(value), consuming and returning self.

Source

pub fn with_java_multiple_files(self, value: bool) -> Self

Sets Self::java_multiple_files to Some(value), consuming and returning self.

Source

pub fn with_java_generate_equals_and_hash(self, value: bool) -> Self

Sets Self::java_generate_equals_and_hash to Some(value), consuming and returning self.

Source

pub fn with_java_string_check_utf8(self, value: bool) -> Self

Sets Self::java_string_check_utf8 to Some(value), consuming and returning self.

Source

pub fn with_optimize_for(self, value: impl Into<OptimizeMode>) -> Self

Sets Self::optimize_for to Some(value), consuming and returning self.

Source

pub fn with_go_package(self, value: impl Into<String>) -> Self

Sets Self::go_package to Some(value), consuming and returning self.

Source

pub fn with_cc_generic_services(self, value: bool) -> Self

Sets Self::cc_generic_services to Some(value), consuming and returning self.

Source

pub fn with_java_generic_services(self, value: bool) -> Self

Sets Self::java_generic_services to Some(value), consuming and returning self.

Source

pub fn with_py_generic_services(self, value: bool) -> Self

Sets Self::py_generic_services to Some(value), consuming and returning self.

Source

pub fn with_deprecated(self, value: bool) -> Self

Sets Self::deprecated to Some(value), consuming and returning self.

Source

pub fn with_cc_enable_arenas(self, value: bool) -> Self

Sets Self::cc_enable_arenas to Some(value), consuming and returning self.

Source

pub fn with_objc_class_prefix(self, value: impl Into<String>) -> Self

Sets Self::objc_class_prefix to Some(value), consuming and returning self.

Source

pub fn with_csharp_namespace(self, value: impl Into<String>) -> Self

Sets Self::csharp_namespace to Some(value), consuming and returning self.

Source

pub fn with_swift_prefix(self, value: impl Into<String>) -> Self

Sets Self::swift_prefix to Some(value), consuming and returning self.

Source

pub fn with_php_class_prefix(self, value: impl Into<String>) -> Self

Sets Self::php_class_prefix to Some(value), consuming and returning self.

Source

pub fn with_php_namespace(self, value: impl Into<String>) -> Self

Sets Self::php_namespace to Some(value), consuming and returning self.

Source

pub fn with_php_metadata_namespace(self, value: impl Into<String>) -> Self

Sets Self::php_metadata_namespace to Some(value), consuming and returning self.

Source

pub fn with_ruby_package(self, value: impl Into<String>) -> Self

Sets Self::ruby_package to Some(value), consuming and returning self.

Trait Implementations§

Source§

impl Clone for FileOptions

Source§

fn clone(&self) -> FileOptions

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FileOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for FileOptions

Source§

fn default() -> FileOptions

Returns the “default value” for a type. Read more
Source§

impl DefaultInstance for FileOptions

Source§

fn default_instance() -> &'static Self

Return a reference to the single default instance of this type.
Source§

impl ExtensionSet for FileOptions

Source§

const PROTO_FQN: &'static str = "google.protobuf.FileOptions"

Fully-qualified proto type name of this message (no leading dot), e.g. "google.protobuf.FieldOptions". Read more
Source§

fn unknown_fields(&self) -> &UnknownFields

Immutable access to the extendee’s unknown-field storage.
Source§

fn unknown_fields_mut(&mut self) -> &mut UnknownFields

Mutable access to the extendee’s unknown-field storage.
Source§

fn extension<C>(&self, ext: &Extension<C>) -> <C as ExtensionCodec>::Output
where C: ExtensionCodec,

Read an extension value. Read more
Source§

fn set_extension<C>( &mut self, ext: &Extension<C>, value: <C as ExtensionCodec>::Value, )
where C: ExtensionCodec,

Write an extension value, replacing any prior occurrences. Read more
Source§

fn has_extension<C>(&self, ext: &Extension<C>) -> bool
where C: ExtensionCodec,

Returns true if any record at the extension’s field number is present. Read more
Source§

fn clear_extension<C>(&mut self, ext: &Extension<C>)
where C: ExtensionCodec,

Remove all records at the extension’s field number. Read more
Source§

fn extension_or_default<C>( &self, ext: &Extension<C>, ) -> <C as ExtensionCodec>::Value
where C: ExtensionCodec<Output = Option<<C as ExtensionCodec>::Value>>, <C as ExtensionCodec>::Value: Default,

Read a singular extension value, returning the proto2 [default = ...] value if absent, or the type’s Default if no proto default was declared. Read more
Source§

impl Message for FileOptions

Source§

fn compute_size(&self, __cache: &mut SizeCache) -> u32

Returns the total encoded size in bytes.

The result is a u32; the protobuf specification requires all messages to fit within 2 GiB (2,147,483,647 bytes), so a compliant message will never overflow this type.

Source§

fn write_to(&self, __cache: &mut SizeCache, buf: &mut impl BufMut)

Write this message’s encoded bytes to a buffer, consuming nested-message sizes from cache (populated by a prior compute_size call on the same cache). Read more
Source§

fn merge_field( &mut self, tag: Tag, buf: &mut impl Buf, depth: u32, ) -> Result<(), DecodeError>

Processes a single already-decoded tag and its associated field data from buf. Read more
Source§

fn clear(&mut self)

Clear all fields to their default values.
Source§

fn encode(&self, buf: &mut impl BufMut)

Compute size, then write. This is the primary encoding API.
Source§

fn encode_with_cache(&self, cache: &mut SizeCache, buf: &mut impl BufMut)

Encode using a caller-supplied SizeCache, for reuse across many encodes in a hot loop. Clears the cache first.
Source§

fn encoded_len(&self) -> u32

Compute the encoded byte size of this message. Read more
Source§

fn encode_length_delimited(&self, buf: &mut impl BufMut)

Encode this message as a length-delimited byte sequence.
Source§

fn encode_to_vec(&self) -> Vec<u8>

Encode this message to a new Vec<u8>.
Source§

fn encode_to_bytes(&self) -> Bytes

Encode this message to a new bytes::Bytes. Read more
Source§

fn decode(buf: &mut impl Buf) -> Result<Self, DecodeError>
where Self: Sized,

Decode a message from a buffer.
Source§

fn decode_from_slice(data: &[u8]) -> Result<Self, DecodeError>
where Self: Sized,

Decode a message from a byte slice. Read more
Source§

fn decode_length_delimited(buf: &mut impl Buf) -> Result<Self, DecodeError>
where Self: Sized,

Decode a length-delimited message from a buffer. Read more
Source§

fn merge_to_limit( &mut self, buf: &mut impl Buf, depth: u32, limit: usize, ) -> Result<(), DecodeError>

Merge fields from a buffer until buf.remaining() reaches limit. Read more
Source§

fn merge_group( &mut self, buf: &mut impl Buf, depth: u32, field_number: u32, ) -> Result<(), DecodeError>

Merges a group-encoded message from buf, reading fields until an EndGroup tag with the given field_number is encountered. Read more
Source§

fn merge(&mut self, buf: &mut impl Buf, depth: u32) -> Result<(), DecodeError>

Merge fields from a buffer into this message. Read more
Source§

fn merge_from_slice(&mut self, data: &[u8]) -> Result<(), DecodeError>

Merge fields from a byte slice into this message. Read more
Source§

fn merge_length_delimited( &mut self, buf: &mut impl Buf, depth: u32, ) -> Result<(), DecodeError>

Merge fields from a length-delimited sub-message payload into this message. Read more
Source§

impl MessageName for FileOptions

Source§

const PACKAGE: &'static str = "google.protobuf"

The protobuf package the message is declared in. Read more
Source§

const NAME: &'static str = "FileOptions"

The unqualified message name, with . between nesting levels. Read more
Source§

const FULL_NAME: &'static str = "google.protobuf.FileOptions"

The fully-qualified protobuf type name with no leading dot. Read more
Source§

const TYPE_URL: &'static str = "type.googleapis.com/google.protobuf.FileOptions"

The google.protobuf.Any.type_url form for this message. Read more
Source§

impl PartialEq for FileOptions

Source§

fn eq(&self, other: &FileOptions) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for FileOptions

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.