pub struct DescriptorPool { /* private fields */ }
Expand description

A DescriptorPool is a collection of related descriptors. Typically it will be created from a FileDescriptorSet output by the protobuf compiler (see DescriptorPool::from_file_descriptor_set) but it may also be built up by adding files individually.

Methods like MessageDescriptor::extensions will be scoped to just the files contained within the parent DescriptorPool.

This type is uses reference counting internally so it is cheap to clone. Modifying an instance of a pool will not update any existing clones of the instance.

Implementations§

source§

impl DescriptorPool

source

pub fn new() -> Self

Creates a new, empty DescriptorPool.

For the common case of creating a DescriptorPool from a single FileDescriptorSet, see DescriptorPool::from_file_descriptor_set or DescriptorPool::decode.

source

pub fn from_file_descriptor_set( file_descriptor_set: FileDescriptorSet ) -> Result<Self, DescriptorError>

Creates a DescriptorPool from a FileDescriptorSet.

This is equivalent to calling DescriptorPool::add_file_descriptor_set on an empty DescriptorPool instance. See that method’s documentation for details.

source

pub fn decode<B>(bytes: B) -> Result<Self, DescriptorError>where B: Buf,

Decodes a FileDescriptorSet from its protobuf byte representation and creates a new DescriptorPool wrapping it.

source

pub fn add_file_descriptor_set( &mut self, file_descriptor_set: FileDescriptorSet ) -> Result<(), DescriptorError>

Adds a new FileDescriptorSet to this DescriptorPool.

A file descriptor set may be generated by running the protobuf compiler with the --descriptor_set_out flag. If you are using prost-build, then Config::file_descriptor_set_path is a convenient way to generate it as part of your build.

This method may return an error if file_descriptor_set is invalid, for example it contains references to types not in the set. If file_descriptor_set was created by the protobuf compiler, these error cases should never occur since it performs its own validation.

source

pub fn add_file_descriptor_protos<I>( &mut self, files: I ) -> Result<(), DescriptorError>where I: IntoIterator<Item = FileDescriptorProto>,

Adds a collection of file descriptors to this pool.

The file descriptors may be provided in any order, however all types referenced must be defined either in one of the files provided, or in a file previously added to the pool.

Duplicate file descriptors are ignored, however adding two different files with the same name will return an error.

source

pub fn add_file_descriptor_proto( &mut self, file: FileDescriptorProto ) -> Result<(), DescriptorError>

Add a single file descriptor to the pool.

All types referenced by the file must be defined either in the file itself, or in a file previously added to the pool.

source

pub fn decode_file_descriptor_proto<B>( &mut self, bytes: B ) -> Result<(), DescriptorError>where B: Buf,

Decode and add a single file descriptor to the pool.

All types referenced by the file must be defined either in the file itself, or in a file previously added to the pool.

Unlike when using add_file_descriptor_proto(), any extension options defined in the file descriptor are preserved.

source

pub fn decode_file_descriptor_set<B>( &mut self, bytes: B ) -> Result<(), DescriptorError>where B: Buf,

Decode and add a set of file descriptors to the pool.

The file descriptors may be provided in any order, however all types referenced must be defined either in one of the files provided, or in a file previously added to the pool.

Unlike when using add_file_descriptor_set(), any extension options defined in the file descriptors are preserved.

source

pub fn files(&self) -> impl ExactSizeIterator<Item = FileDescriptor> + '_

Gets an iterator over the file descriptors added to this pool.

source

pub fn get_file_by_name(&self, name: &str) -> Option<FileDescriptor>

Gets a file descriptor by its name, or None if no such file has been added.

source

pub fn file_descriptor_protos( &self ) -> impl ExactSizeIterator<Item = &FileDescriptorProto> + '_

Gets a iterator over the raw FileDescriptorProto instances wrapped by this DescriptorPool.

source

pub fn encode<B>(&self, buf: B) -> Result<(), EncodeError>where B: BufMut,

Encodes the files contained within this DescriptorPool to their byte representation.

The encoded message is equivalent to a FileDescriptorSet, however also includes any extension options that were defined.

source

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

Encodes the files contained within this DescriptorPool to a newly allocated buffer.

The encoded message is equivalent to a FileDescriptorSet, however also includes any extension options that were defined.

source

pub fn services(&self) -> impl ExactSizeIterator<Item = ServiceDescriptor> + '_

Gets an iterator over the services defined in these protobuf files.

source

pub fn all_messages( &self ) -> impl ExactSizeIterator<Item = MessageDescriptor> + '_

Gets an iterator over all message types defined in these protobuf files.

The iterator includes nested messages defined in another message.

source

pub fn all_enums(&self) -> impl ExactSizeIterator<Item = EnumDescriptor> + '_

Gets an iterator over all enum types defined in these protobuf files.

The iterator includes nested enums defined in another message.

source

pub fn all_extensions( &self ) -> impl ExactSizeIterator<Item = ExtensionDescriptor> + '_

Gets an iterator over all extension fields defined in these protobuf files.

The iterator includes nested extension fields defined in another message.

source

pub fn get_message_by_name(&self, name: &str) -> Option<MessageDescriptor>

Gets a MessageDescriptor by its fully qualified name, for example my.package.MessageName.

source

pub fn get_enum_by_name(&self, name: &str) -> Option<EnumDescriptor>

Gets an EnumDescriptor by its fully qualified name, for example my.package.EnumName.

source

pub fn get_extension_by_name(&self, name: &str) -> Option<ExtensionDescriptor>

Gets an ExtensionDescriptor by its fully qualified name, for example my.package.my_extension.

source

pub fn get_service_by_name(&self, name: &str) -> Option<ServiceDescriptor>

Gets an ServiceDescriptor by its fully qualified name, for example my.package.MyService.

Trait Implementations§

source§

impl Clone for DescriptorPool

source§

fn clone(&self) -> DescriptorPool

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for DescriptorPool

source§

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

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

impl Default for DescriptorPool

source§

fn default() -> DescriptorPool

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

impl PartialEq<DescriptorPool> for DescriptorPool

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for DescriptorPool

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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 Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.