Using SQLite asynchronously

Something like this:

type Job<T> = Box<dyn FnOnce(&mut Option<T>) + Send>;
        let (sender, receiver) = channel::<Job<T>>();
        
        let join_handle = thread::spawn(move || {
            let mut obj = match constructor() {
                Ok(x) => Some(x),
                Err(err) => {
                    error!("Initialiazion cause error: {}", err);
                    None
                }
            };
            loop {
                match receiver.recv() {
                    Ok(x) => x(&mut obj),
                    Err(err) => {
                        trace!("thread pool({}) recv error: {}", name, err);
                        break;
                    }
                }
            }
        });

So you can create sqlite handle inside thread, and then send via channel FnOnce(&mut Option<rusqlite::Connection>