#push #try #vec-deque #vec

try-push

A trait for attempting potentially expensive actions

3 stable releases

1.0.2 Mar 5, 2021

#1139 in Data structures

39 downloads per month

MIT license

6KB
90 lines

This crate is useful for preventing expensive actions from taking place while adding elements to collections. It exports a single trait, TryPush and has implementations for both Vec<T> and VecDeque<T> from the standard library.

Examples:

use try_push::*;

let mut vec = Vec::with_capacity(4);
vec.push(1);
vec.push(2);
vec.push(3);
vec.push(4); // won't reallocate
// vec.push(5); // will reallocate

assert_eq!(vec.try_push(5), Element::NotAdded(5));

No runtime deps