Skip to main content

FeatureGateNames

Struct FeatureGateNames 

Source
#[non_exhaustive]
pub struct FeatureGateNames { pub json: String, pub views: String, pub text: String, pub reflect: String, }
Expand description

Crate feature names used by the gated impls, customizable per impl kind.

Used by CodeGenConfig::feature_gate_names. The defaults are "json", "views", "text", and "reflect"; the consuming crate must define matching features in its Cargo.toml. Override a name when the consuming crate already uses a different feature name for the same concern (e.g. a crate whose JSON support is gated behind a serde feature).

Names are emitted verbatim into #[cfg(feature = "...")] / #[cfg_attr(feature = "...", ...)] attributes; they must be valid Cargo feature names. An empty, misspelled, or undeclared name fails open: the emitted #[cfg] is permanently false in the consuming crate, so the gated impls silently compile away. To catch the cases that are detectable at generation time, generate returns an error when an active gate name is empty or not a valid Cargo feature name; an undeclared (but valid) name can only be diagnosed in the consuming crate, via the unexpected_cfgs lint on Rust ≥ 1.80.

The struct is #[non_exhaustive]; construct it by mutating FeatureGateNames::default() (or use the buffa_build::Config setters).

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§json: String

Feature gating the serde JSON impls (default "json").

§views: String

Feature gating the view types and impls (default "views").

§text: String

Feature gating the textproto impls (default "text").

§reflect: String

Feature gating the reflection impls (default "reflect").

Implementations§

Source§

impl FeatureGateNames

Source

pub fn is_valid_name(name: &str) -> bool

Whether name is a valid Cargo feature name: starts with an ASCII alphanumeric or _, with the remainder drawn from alphanumerics, _, -, +, and ..

This is the rule generate enforces on every active gate name. It is public so toolchains layered on buffa-codegen (e.g. service generators with their own feature-gate knobs) can validate user-supplied names against the same rule instead of re-deriving it.

Trait Implementations§

Source§

impl Clone for FeatureGateNames

Source§

fn clone(&self) -> FeatureGateNames

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 FeatureGateNames

Source§

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

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

impl Default for FeatureGateNames

Source§

fn default() -> Self

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

impl Eq for FeatureGateNames

Source§

impl PartialEq for FeatureGateNames

Source§

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

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.