Crates.io | contain |
lib.rs | contain |
version | 0.4.0 |
source | src |
created_at | 2022-09-02 17:04:44.86324 |
updated_at | 2022-09-09 12:49:22.853719 |
description | A crate for defining/extending lifetimes |
homepage | |
repository | https://git.samuelcollins.dev/sam/contain-rs |
max_upload_size | |
id | 657483 |
size | 31,292 |
A crate for defining/extending lifetimes.
A basic fast implementation of Container
backed by Vec
.
use contain::{Container, SimpleContainer};
fn append_thing<'a>(container: &'a impl Container<String>, s: &str) -> &'a str {
container.put(format!("{}thing", s))
}
let container = SimpleContainer::new();
let a = append_thing(&container, "some");
let b = append_thing(&container, "a ");
let c = append_thing(&container, "that ");
assert_eq!(a, "something");
assert_eq!(b, "a thing");
assert_eq!(c, "that thing");
assert_eq!(container.len(), 3)
A deduplicating Container
backed by a std::collections::HashSet
.
If two equal items are stored, the second is dropped
and a reference to the first is returned.
Whilst more resource-intensive than SimpleContainer
, it can be more memory efficient in scenarios where many
items are equal and equivalent since the duplicates will be dropped.
use contain::{Container, DeduplicatingContainer};
fn append_thing<'a>(container: &'a impl Container<String>, s: &str) -> &'a str {
container.put(format!("{}thing", s))
}
let container = DeduplicatingContainer::new();
let a = append_thing(&container, "some");
let b = append_thing(&container, "a ");
let c = append_thing(&container, "some");
assert_eq!(a, "something");
assert_eq!(b, "a thing");
assert_eq!(c, "something");
assert_eq!(container.len(), 2);