Skip to main content

ParsedArgs

Struct ParsedArgs 

Source
pub struct ParsedArgs(/* private fields */);
Expand description

Parsed command arguments, passed to crate::executor::CommandHandler::execute and crate::executor::AsyncCommandHandler::execute

Wraps the output of CliParser::parse_typed, exposing typed accessors so handlers never need to match on ParsedValue directly. Introduced in v0.6.0 (#39) to replace &HashMap<String, String>, which could not represent repeatable options.

Lives directly in parser rather than nested under cli_parser: it is the shared type consumed by every handler regardless of dispatch path (CLI via CliParser::parse_typed_segment, or REPL via ParsedArgs::from_scalars) — not a CLI-specific detail.

§Example

use dynamic_cli::parser::ParsedArgs;

let args = ParsedArgs::from_scalars(
    [("name".to_string(), "World".to_string())].into_iter().collect(),
);
assert_eq!(args.get_scalar("name"), Some("World"));
assert_eq!(args.get_scalar("missing"), None);

Implementations§

Source§

impl ParsedArgs

Source

pub fn new(values: HashMap<String, ParsedValue>) -> Self

Wrap an already-typed result, as produced by CliParser::parse_typed

Source

pub fn from_scalars(values: HashMap<String, String>) -> Self

Build a scalar-only ParsedArgs from a plain HashMap<String, String>

Every entry becomes a ParsedValue::Scalar; there is no way to represent ParsedValue::Repeated through this constructor.

Used by the REPL dispatch path (interface/repl.rs), which relies on crate::parser::repl_parser::ReplParser::parse_line, which only produces scalar values: repeatable options have no use case at the interactive prompt so far, so that path was left scalar-only when they were introduced. Scripts run with CliInterface::run_script go through the CLI dispatch path and keep repeatable options; the REPL :load directive replays its lines through this scalar path.

Source

pub fn get_scalar(&self, name: &str) -> Option<&str>

Get a scalar argument or option value by name

Returns None both when the name is absent and when it is present but holds a ParsedValue::Repeated value — mirroring HashMap::get’s silent-on-absence semantics rather than distinguishing “wrong kind” from “missing”.

Source

pub fn get_repeated(&self, name: &str) -> Option<&[OptionOccurrence]>

Get every occurrence of a repeatable option by name

Returns None both when the name is absent and when it is present but holds a ParsedValue::Scalar value — same silent-on-absence contract as Self::get_scalar.

Source

pub fn to_scalar_map(&self) -> HashMap<String, String>

Collapse back down to a scalar-only HashMap<String, String>

Every ParsedValue::Scalar entry is kept as-is; any ParsedValue::Repeated entry is silently dropped, for the same reason as Self::from_scalars: nothing on the scalar side consumes repeatable options yet. Used at the boundary of subsystems that predate repeatable options (v0.6.0) and have not been extended to understand repeatable options, e.g. the WASM plugin ABI (WasmHandler, in plugin::wasm), which serializes arguments as flat HashMap<String, String> to the guest.

Trait Implementations§

Source§

impl Clone for ParsedArgs

Source§

fn clone(&self) -> Self

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 ParsedArgs

Source§

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

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

impl Default for ParsedArgs

Source§

fn default() -> Self

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

impl PartialEq for ParsedArgs

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ParsedArgs

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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, !>

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.