Skip to main content

ReflectMode

Enum ReflectMode 

Source
#[non_exhaustive]
pub enum ReflectMode { Off, Bridge, VTable, }
Expand description

How much reflection support generated types get.

Selected through buffa_build’s reflect_mode builder method (or the protoc-gen-buffa reflect_mode= option). All modes need the consuming crate to depend on buffa-descriptor with its reflect feature and on std; the call site is foo.reflect().get(fd) regardless of mode.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Off

No reflection impls.

§

Bridge

Reflectable::reflect() round-trips the message through a DynamicMessage (encode → decode → boxed handle). Smaller generated code; pays an allocation and a re-encode per reflect() call.

§

VTable

impl ReflectMessage directly on the owned and view types, and Reflectable::reflect() borrows self with no round-trip. Larger generated code; near-free reflective access. Does not require view generation — with views off, only the owned impls are emitted.

Implementations§

Source§

impl ReflectMode

Source

pub fn apply(self, config: &mut CodeGenConfig)

Apply this mode to a CodeGenConfig (sets generate_reflection / generate_reflection_vtable). Used by the buffa-build and protoc-gen-buffa front-ends.

Trait Implementations§

Source§

impl Clone for ReflectMode

Source§

fn clone(&self) -> ReflectMode

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 ReflectMode

Source§

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

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

impl Default for ReflectMode

Source§

fn default() -> ReflectMode

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

impl PartialEq for ReflectMode

Source§

fn eq(&self, other: &ReflectMode) -> 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 Copy for ReflectMode

Source§

impl Eq for ReflectMode

Source§

impl StructuralPartialEq for ReflectMode

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.