In order to share the running transaction into a DAO style data management class, I have wrapped the transaction in an Arc<Mutex> and pass it into the DAO.

The issue is, once the transaction is in there I cannot call commit() on it because it cannot be moved out of the Arc<Mutex> anymore, as the commit requires a mut self.

Any ideas on how to work around this?

  • nous@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    ·
    15 days ago

    Not sure why you need an arc mutex to delegate it to the responsible component. Seems like the type of thing that should not cross thread boundaries nor be cloned multiple times.

      • BB_C@programming.dev
        link
        fedilink
        arrow-up
        5
        ·
        15 days ago

        You appear to be generally confused.

        If you’re using the multi-threaded work-stealing tokio runtime (the default), you are “talking threads”. And if you aren’t, Arc and Mutex would be useless, irregardless of whether you’re doing it right or wrong.