Thanks to visit codestin.com
Credit goes to lib.rs

3 stable releases

Uses new Rust 2024

1.1.1 May 18, 2025
1.0.0 May 18, 2025

#28 in #box

39 downloads per month

MIT license

6KB
89 lines

An atomic verison of Option<Box<T>>.

Latest Version Rust Documentation GitHub license

One use case for this is being able to have one thread send many updates to another, but the other thread only cares about looking at the latest value.

use box_swap::BoxSwap;

struct Data {}

let value: BoxSwap<Data> = BoxSwap::empty();
std::thread::scope(|s| {
    s.spawn(|| {
        loop {
            if let Some(new_value) = value.take() {
                // update the value, maybe if this was a renderer you would upload the value to the gpu
                // if multiple values were "sent" before this happens, it doesnt matter, `new_value` is the most up-to-date value
            }

            // do whatever
        }
    });

    loop {
        // do whatever computation, maybe this could be a game loop

        value.store(Box::new(Data {})); // send the data to the other thread
    }
});

No runtime deps