Rust typemaps with additional trait restrictions and implementations
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trivernis 51dd8a5c09
Change typemap base to be generic
Signed-off-by: trivernis <trivernis@protonmail.com>
3 years ago
src Change typemap base to be generic 3 years ago
.gitignore Add initial map implementations 3 years ago
Cargo.toml Add initial map implementations 3 years ago
LICENSE Create LICENSE 3 years ago
README.md Add safety hint 3 years ago

README.md

Trait bound Typemap

This crate offers typemaps that restrict a given type in their trait and therefore offer additional trait implementations such as Clone and PartialEq.

Safety

This crate relies on the multi-trait-object crate which provides a workaround for storing a type erased object with all associated traits until this feature is implemented in the language itself. This crate will likely break when the fat pointer used by trait objects changes which it hasn't in a long time so far.

Usage

use trait_bound_typemap::{CloneTypeMap, TypeMapTrait, TypeMapKey};

#[derive(Clone)]
pub struct MyStruct {
    a: u8,
    b: String,
}

pub struct MyStructKey;

impl TypeMapKey for MyStructKey {
    type Value = MyStruct;
}

fn main() {
    let mut map = CloneTypeMap::new();
    let value = MyStruct {a: 5, b: String::from("Hello World")};
    map.insert::<MyStructKey>(value);
    assert!(map.contains_key::<MyStructKey>());
}

License

Apache-2.0