Skip to main content

SimpleFnHandler

Struct SimpleFnHandler 

Source
pub struct SimpleFnHandler<F, T, R = HandlerResult<T>>
where T: Serialize + Send + Sync,
{ /* 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 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: Fn(&ArgMatches) -> R + Send + Sync, R: IntoHandlerResult<T>, T: Serialize + Send + Sync,

Source

pub fn new(f: F) -> Self

Creates a new SimpleFnHandler wrapping the given closure.

Trait Implementations§

Source§

impl<F, T, R> Handler for SimpleFnHandler<F, T, R>
where F: Fn(&ArgMatches) -> R + Send + Sync, R: IntoHandlerResult<T>, T: Serialize + Send + Sync,

Source§

type Output = T

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

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

Execute the handler with the given matches and context.

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.