#[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
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.json: StringFeature gating the serde JSON impls (default "json").
views: StringFeature gating the view types and impls (default "views").
text: StringFeature gating the textproto impls (default "text").
reflect: StringFeature gating the reflection impls (default "reflect").
Implementations§
Source§impl FeatureGateNames
impl FeatureGateNames
Sourcepub fn is_valid_name(name: &str) -> bool
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
impl Clone for FeatureGateNames
Source§fn clone(&self) -> FeatureGateNames
fn clone(&self) -> FeatureGateNames
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FeatureGateNames
impl Debug for FeatureGateNames
Source§impl Default for FeatureGateNames
impl Default for FeatureGateNames
impl Eq for FeatureGateNames
Source§impl PartialEq for FeatureGateNames
impl PartialEq for FeatureGateNames
Source§fn eq(&self, other: &FeatureGateNames) -> bool
fn eq(&self, other: &FeatureGateNames) -> bool
self and other values to be equal, and is used by ==.