Skip to main content

GroupSpec

Struct GroupSpec 

Source
#[non_exhaustive]
pub struct GroupSpec { pub name: String, pub short: String, pub long: Option<String>, pub aliases: Vec<String>, pub hidden: bool, pub commands: Vec<CommandSpec>, pub groups: Vec<GroupSpec>, pub feature_flag: Option<FeatureFlag>, }
Expand description

Declarative command group metadata.

Groups are noun-based containers. They do not run business logic directly; when invoked bare, the CLI renders group help.

Construct with GroupSpec::new, then configure with the with_* builder methods — never as a struct literal. #[non_exhaustive] enforces this so the engine can add fields later without a breaking release.

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.
§name: String

Group command name.

§short: String

One-line group description.

§long: Option<String>

Optional long help text.

§aliases: Vec<String>

Alternate group names accepted by the parser.

§hidden: bool

Whether the group runs but is hidden from discovery output.

§commands: Vec<CommandSpec>

Declarative child commands used for static tree construction.

§groups: Vec<GroupSpec>

Declarative nested groups used for static tree construction.

§feature_flag: Option<FeatureFlag>

This group’s own feature-flag declaration, if any.

None means the group has no explicit stage declaration of its own, in which case it inherits its effective stage from its nearest ancestor (enclosing group, then module — nearest declaration wins), implicitly resolving to Stage::Ga if nothing in the ancestor chain declares a flag either; see Stage’s documentation for why that is its default. Set with with_feature_flag. This field only records the group’s own declaration; cascading resolution against the ancestor chain happens when a Cli mounts the enclosing module or parent group.

Implementations§

Source§

impl GroupSpec

Source

pub fn new(name: impl Into<String>, short: impl Into<String>) -> Self

Creates a command group with the required name and one-line help.

Source

pub fn with_long(self, long: impl Into<String>) -> Self

Sets expanded group help.

Source

pub fn with_alias(self, alias: impl Into<String>) -> Self

Adds one group alias.

Source

pub fn hidden(self, hidden: bool) -> Self

Hides or shows this group in discovery output.

Source

pub fn with_command(self, command: CommandSpec) -> Self

Adds one declarative child command.

Source

pub fn with_group(self, group: GroupSpec) -> Self

Adds one declarative nested group.

Source

pub fn with_feature_flag(self, key: impl Into<String>, stage: Stage) -> Self

Declares this group’s own feature flag: the key used for policy overrides and introspection, and the stage at which it becomes visible.

Source

pub fn clap_command(&self) -> Command

Builds the clap command for parser registration.

Trait Implementations§

Source§

impl Clone for GroupSpec

Source§

fn clone(&self) -> GroupSpec

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 GroupSpec

Source§

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

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

impl Default for GroupSpec

Source§

fn default() -> GroupSpec

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

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = !

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more