Skip to main content

Flag

Struct Flag 

Source
pub struct Flag { /* private fields */ }
Expand description

A flag definition for a crate::Command or app-level registration.

Flags can carry an optional short alias (e.g. "h" for "help") which is resolved to the canonical name before the handler is called. Use Flag::global to create a flag that is available across all commands.

Implementations§

Source§

impl Flag

Source

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

Creates a new command-scoped flag with the given canonical name.

The name should be given without the -- prefix, e.g. "silent" for --silent.

Examples found in repository?
examples/taskr.rs (line 164)
147fn main() {
148    App::new("taskr")
149        .name("Taskr")
150        .description("A toy task manager. Demonstrates all vecli features.")
151        .version("0.1.0")
152        .main(entry)
153        .flag(
154            Flag::global("verbose")
155                .alias("v")
156                .description("Enable verbose output."),
157        )
158        .print_help_on_fail(true)
159        .add_command(
160            Command::new("add", add)
161                .description("Add a new task.")
162                .usage("<task> [--priority <level>]")
163                .flag(
164                    Flag::new("priority")
165                        .alias("p")
166                        .description("Task priority: low, medium, or high."),
167                )
168                .strict_flags(true),
169        )
170        .add_command(
171            Command::new("list", list)
172                .description("List pending tasks.")
173                .flag(
174                    Flag::new("all")
175                        .alias("a")
176                        .description("Include completed tasks."),
177                )
178                .subcommand(
179                    Command::new("urgent", list_urgent)
180                        .description("List only high-priority tasks."),
181                ),
182        )
183        .add_command(
184            Command::new("done", done)
185                .description("Mark a task as done.")
186                .usage("<task>"),
187        )
188        .add_command(
189            Command::parent("config")
190                .description("Manage taskr configuration.")
191                .print_help_if_no_args(true)
192                .subcommand(
193                    Command::new("set", config_set)
194                        .description("Set a config value.")
195                        .usage("<key> <value>"),
196                )
197                .subcommand(Command::new("show", config_show).description("Show current config.")),
198        )
199        .add_command(Command::new("clear", clear).description("Clear all tasks."))
200        .run();
201}
Source

pub fn global(name: impl Into<String>) -> Self

Creates a new global flag available to all commands in the app.

Global flags are resolved and merged into crate::CommandContext::flags for every command, so handlers can read them without any extra setup. Register global flags on the app via crate::App::flag.

§Example
use vecli::Flag;

let debug = Flag::global("debug").alias("g").description("Enable debug output.");
Examples found in repository?
examples/taskr.rs (line 154)
147fn main() {
148    App::new("taskr")
149        .name("Taskr")
150        .description("A toy task manager. Demonstrates all vecli features.")
151        .version("0.1.0")
152        .main(entry)
153        .flag(
154            Flag::global("verbose")
155                .alias("v")
156                .description("Enable verbose output."),
157        )
158        .print_help_on_fail(true)
159        .add_command(
160            Command::new("add", add)
161                .description("Add a new task.")
162                .usage("<task> [--priority <level>]")
163                .flag(
164                    Flag::new("priority")
165                        .alias("p")
166                        .description("Task priority: low, medium, or high."),
167                )
168                .strict_flags(true),
169        )
170        .add_command(
171            Command::new("list", list)
172                .description("List pending tasks.")
173                .flag(
174                    Flag::new("all")
175                        .alias("a")
176                        .description("Include completed tasks."),
177                )
178                .subcommand(
179                    Command::new("urgent", list_urgent)
180                        .description("List only high-priority tasks."),
181                ),
182        )
183        .add_command(
184            Command::new("done", done)
185                .description("Mark a task as done.")
186                .usage("<task>"),
187        )
188        .add_command(
189            Command::parent("config")
190                .description("Manage taskr configuration.")
191                .print_help_if_no_args(true)
192                .subcommand(
193                    Command::new("set", config_set)
194                        .description("Set a config value.")
195                        .usage("<key> <value>"),
196                )
197                .subcommand(Command::new("show", config_show).description("Show current config.")),
198        )
199        .add_command(Command::new("clear", clear).description("Clear all tasks."))
200        .run();
201}
Source

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

Sets the short alias for this flag (e.g. "h" to match -h).

Aliases are always treated as boolean regardless of the long flag’s value type.

Examples found in repository?
examples/taskr.rs (line 155)
147fn main() {
148    App::new("taskr")
149        .name("Taskr")
150        .description("A toy task manager. Demonstrates all vecli features.")
151        .version("0.1.0")
152        .main(entry)
153        .flag(
154            Flag::global("verbose")
155                .alias("v")
156                .description("Enable verbose output."),
157        )
158        .print_help_on_fail(true)
159        .add_command(
160            Command::new("add", add)
161                .description("Add a new task.")
162                .usage("<task> [--priority <level>]")
163                .flag(
164                    Flag::new("priority")
165                        .alias("p")
166                        .description("Task priority: low, medium, or high."),
167                )
168                .strict_flags(true),
169        )
170        .add_command(
171            Command::new("list", list)
172                .description("List pending tasks.")
173                .flag(
174                    Flag::new("all")
175                        .alias("a")
176                        .description("Include completed tasks."),
177                )
178                .subcommand(
179                    Command::new("urgent", list_urgent)
180                        .description("List only high-priority tasks."),
181                ),
182        )
183        .add_command(
184            Command::new("done", done)
185                .description("Mark a task as done.")
186                .usage("<task>"),
187        )
188        .add_command(
189            Command::parent("config")
190                .description("Manage taskr configuration.")
191                .print_help_if_no_args(true)
192                .subcommand(
193                    Command::new("set", config_set)
194                        .description("Set a config value.")
195                        .usage("<key> <value>"),
196                )
197                .subcommand(Command::new("show", config_show).description("Show current config.")),
198        )
199        .add_command(Command::new("clear", clear).description("Clear all tasks."))
200        .run();
201}
Source

pub fn description(self, desc: impl Into<String>) -> Self

Sets the description shown in help output.

Examples found in repository?
examples/taskr.rs (line 156)
147fn main() {
148    App::new("taskr")
149        .name("Taskr")
150        .description("A toy task manager. Demonstrates all vecli features.")
151        .version("0.1.0")
152        .main(entry)
153        .flag(
154            Flag::global("verbose")
155                .alias("v")
156                .description("Enable verbose output."),
157        )
158        .print_help_on_fail(true)
159        .add_command(
160            Command::new("add", add)
161                .description("Add a new task.")
162                .usage("<task> [--priority <level>]")
163                .flag(
164                    Flag::new("priority")
165                        .alias("p")
166                        .description("Task priority: low, medium, or high."),
167                )
168                .strict_flags(true),
169        )
170        .add_command(
171            Command::new("list", list)
172                .description("List pending tasks.")
173                .flag(
174                    Flag::new("all")
175                        .alias("a")
176                        .description("Include completed tasks."),
177                )
178                .subcommand(
179                    Command::new("urgent", list_urgent)
180                        .description("List only high-priority tasks."),
181                ),
182        )
183        .add_command(
184            Command::new("done", done)
185                .description("Mark a task as done.")
186                .usage("<task>"),
187        )
188        .add_command(
189            Command::parent("config")
190                .description("Manage taskr configuration.")
191                .print_help_if_no_args(true)
192                .subcommand(
193                    Command::new("set", config_set)
194                        .description("Set a config value.")
195                        .usage("<key> <value>"),
196                )
197                .subcommand(Command::new("show", config_show).description("Show current config.")),
198        )
199        .add_command(Command::new("clear", clear).description("Clear all tasks."))
200        .run();
201}

Trait Implementations§

Source§

impl Clone for Flag

Source§

fn clone(&self) -> Flag

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for Flag

Source§

fn default() -> Flag

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

Auto Trait Implementations§

§

impl Freeze for Flag

§

impl RefUnwindSafe for Flag

§

impl Send for Flag

§

impl Sync for Flag

§

impl Unpin for Flag

§

impl UnsafeUnpin for Flag

§

impl UnwindSafe for Flag

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.