Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
src
.gitignore
Cargo.toml
README.md

README.md

maybe_box

maybe_box is a small Rust library for storing arbitrary data in a pointer-sized piece of memory, only allocating if necessary.

Example

// Wrap a bool into a MaybeBox.
// Because a bool is small enough to fit into the size of a pointer, this
// will not do any allocation.
let mb = MaybeBox::new(true);

// Extract the data back out again.
let my_bool = mb.into_inner();
assert_eq!(my_bool, true);

// Wrap a String into a MaybeBox
// Because a String is too big to fit into the size of a pointer, this
// *will* do allocation.
let mb = MaybeBox::new(String::from("hello"));

// We can unpack the MaybeBox to see whether it was boxed or not.
match mb.unpack() {
    maybe_box::Unpacked::Inline(_) => panic!("String wasn't boxed?!"),
    maybe_box::Unpacked::Boxed(b) => {
        // Unbox our string...
        let my_string = *b;

        // ... and get the String that we boxed.
        assert_eq!(&*my_string, "hello");
    },
};
You can’t perform that action at this time.