Skip to main content

SimpleFnHandler

Struct SimpleFnHandler 

Source
pub struct SimpleFnHandler<F, T, R = HandlerResult<T>>
where T: Serialize,
{ /* private fields */ }
Expand description

A handler wrapper for functions that don’t need CommandContext.

This is the simpler variant of FnHandler for handlers that only need ArgMatches. The context parameter is accepted but ignored internally.

The closure can return either:

§Example

use standout_dispatch::{SimpleFnHandler, Handler, CommandContext, Output};
use clap::ArgMatches;

// Handler that doesn't need context - just uses ArgMatches
let mut handler = SimpleFnHandler::new(|_m: &ArgMatches| {
    Ok::<_, anyhow::Error>("Hello, world!".to_string())
});

// Can still be used via Handler trait (context is ignored)
let ctx = CommandContext::default();
let matches = clap::Command::new("test").get_matches_from(vec!["test"]);
let result = handler.handle(&matches, &ctx);
assert!(matches!(result, Ok(Output::Render(_))));

Implementations§

Source§

impl<F, T, R> SimpleFnHandler<F, T, R>
where F: FnMut(&ArgMatches) -> R, R: IntoHandlerResult<T>, T: Serialize,

Source

pub fn new(f: F) -> Self

Creates a new SimpleFnHandler wrapping the given FnMut closure.

Trait Implementations§

Source§

impl<F, T, R> Handler for SimpleFnHandler<F, T, R>
where F: FnMut(&ArgMatches) -> R, R: IntoHandlerResult<T>, T: Serialize,

Source§

type Output = T

The output type produced by this handler (must be serializable)
Source§

fn handle( &mut self, matches: &ArgMatches, _ctx: &CommandContext, ) -> HandlerResult<T>

Execute the handler with the given matches and context.
Source§

fn expected_args(&self) -> Vec<ExpectedArg>

Returns the arguments expected by this handler for verification. Read more

Auto Trait Implementations§

§

impl<F, T, R> Freeze for SimpleFnHandler<F, T, R>
where F: Freeze,

§

impl<F, T, R> RefUnwindSafe for SimpleFnHandler<F, T, R>
where F: RefUnwindSafe,

§

impl<F, T, R> Send for SimpleFnHandler<F, T, R>
where F: Send,

§

impl<F, T, R> Sync for SimpleFnHandler<F, T, R>
where F: Sync,

§

impl<F, T, R> Unpin for SimpleFnHandler<F, T, R>
where F: Unpin,

§

impl<F, T, R> UnwindSafe for SimpleFnHandler<F, T, R>
where F: UnwindSafe,

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> 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, 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.