Generic closure as callback

Hello.
I would like write generic setter for callbacks (closure).

Def:

    pub fn set_generic_write_callback<Closure, T>(&mut self, callback: Closure) -> Result<(), String>
        where Closure: FnMut(u32, T) -> Result<(), String>,
              Closure: 'static + Sized,
              Closure : panic::RefUnwindSafe, T: std::fmt::Display + std::default::Default
    {
        extern "C" fn std_wr_handler<Closure, T>(args: *mut CallbackArgs) -> STATUS_T
            where
                Closure: FnMut(u32, T) -> Result<(), String>,
                Closure: 'static + Sized,
                Closure: panic::RefUnwindSafe, T: std::fmt::Display + std::default::Default
        {
             /// .. any code
        }
  }

Call:

    let mut counter: u16 = 0;

    let my_closure: dyn FnMut(u32, bool) -> Result<(), String> = move |p_arg, state |{
        counter = counter + 1;
        println!("TEST Closure p_arg: {}, state : {}, counter : {:?}", p_arg, _, counter);

        return Ok(());
    };

 ///  v.set_generic_write_callback::<dyn FnMut(u32, bool) -> Result<(), String>, bool>(0, /// true).expect("Error");

How to fix?

I'm solved it.

1 Like

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.