Skip to main content

Module

Struct Module 

Source
#[non_exhaustive]
pub struct Module { pub category: String, pub guides: Vec<GuideEntry>, pub views: Vec<HumanViewDef>, pub feature_flag: Option<FeatureFlag>, pub register: ModuleRegister, }
Expand description

Domain-bounded unit of CLI functionality.

A module usually maps to a product, platform, resource family, or team ownership boundary. It contributes one top-level group plus optional guides and human output views.

Construct with Module::new, then chain with_* methods — never as a struct literal. #[non_exhaustive] enforces this so the engine can add fields 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.
§category: String

Root help category.

§guides: Vec<GuideEntry>

Guide entries merged into the CLI-wide guide command.

§views: Vec<HumanViewDef>

Human output views registered before command execution.

§feature_flag: Option<FeatureFlag>

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

None means the module has no explicit stage declaration of its own, in which case its group and descendants inherit their effective stage from their nearest ancestor (nested group, then 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. A module is the top-level ancestor in that chain: nothing sits above it. Set with with_feature_flag. This field only records the module’s own declaration; cascading resolution (and pruning of nodes the active FlagPolicy hides) happens when a Cli mounts this module via Cli::add_module.

§register: ModuleRegister

Registration function that returns the module’s runtime group.

Implementations§

Source§

impl Module

Source

pub fn new<F>(category: impl Into<String>, register: F) -> Self
where F: Fn(&mut ModuleContext<'_>) -> RuntimeGroupSpec + Send + Sync + 'static,

Creates a closure-based module.

Source

pub fn from_command_module<M>(module: M) -> Self
where M: CommandModule,

Converts a trait-based module into the runtime module type.

Source

pub fn with_guide(self, guide: GuideEntry) -> Self

Adds one guide entry.

Source

pub fn with_guides(self, guides: impl IntoIterator<Item = GuideEntry>) -> Self

Adds several guide entries.

Source

pub fn with_guides_from_markdown( self, files: impl IntoIterator<Item = (impl AsRef<Path>, impl AsRef<[u8]>)>, ) -> Self

Parses markdown guide entries from embedded (path, bytes) pairs.

Source

pub fn with_view(self, view: HumanViewDef) -> Self

Adds one human output view.

Source

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

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

Trait Implementations§

Source§

impl Clone for Module

Source§

fn clone(&self) -> Module

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 Module

Source§

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

Formats the value using the given formatter. 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