You can add SwapArc to your Cargo toml by copying this line:
swap-arc = "0.1.0"
Note: This is basically a faster (only tested on multiple x86_64 setups) drop-in replacement for ArcSwap
SwapArc allows you to swap out Arcs while using them. \ Let's consider this example:
```rust use std::sync::Arc; use std::thread;
struct Config { timout: u64, ... }
struct Server {
config: SwapArc
fn test() { let server = Arc::new(Server { config: Config { timout: 1000, ... }, ... }); thread::spawn(|| { loop { // load the config without fearing any blocking or expensive operations. server.accept_connection(server.config.load().timeout); } }); ... }
// on network update, update the config seamlessly without blocking loads server.config.update(Arc::new(Config { timeout: ..., ... })); ```