this post was submitted on 10 Nov 2024
12 points (92.9% liked)

Rust

5989 readers
18 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
 

In order to share the running transaction into a DAO style data management class, I have wrapped the transaction in an Arc 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 anymore, as the commit requires a mut self.

Any ideas on how to work around this?

you are viewing a single comment's thread
view the rest of the comments
[–] Cpo@lemm.ee 2 points 5 days ago (1 children)

Seems like the into_inner is the way (i see other references to it).

And yes, transactions should be short-lived, this is just about delegating it to the responsible component.

[–] nous@programming.dev 2 points 5 days ago (1 children)

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.

[–] Cpo@lemm.ee 1 points 5 days ago (1 children)

Not talking threads here, more Tokio tasks.

[–] BB_C@programming.dev 4 points 5 days ago (1 children)

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.

[–] Cpo@lemm.ee 1 points 4 days ago

Thanks for the correction 👍