Skip to content

kolgotko/command-pattern.rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

command-pattern

Eexperimental realisation a "command" pattern

Example:

extern crate command_pattern;

use std::error::Error;
use std::any::Any;
use command_pattern::*;

fn main() -> Result<(), Box<Error>> {

    let mut inv: Invoker<Box<dyn Any>> = Invoker::new();

    let result = exec_or_undo_all!(inv, {

        exec: move {

            println!("exec 1");
            Ok(Box::new("i am result") as Box<Any>)

        },
        unexec: move {

            println!("unexec 1");
            Ok(())

        }

    })?;

    let result: &str = result.downcast_ref::<&str>()
        .ok_or("downcast error")?
        .to_owned();

    println!("received: {:?}", result);

    let result = exec_or_undo_all!(inv, move {

        println!("exec 2");
        Err("i am error")?

    })?;

    println!("received: {:?}", result);

    Ok(())

}

About

Experimental realisation a "command" pattern

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages