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.
33 lines
637 B
Markdown
33 lines
637 B
Markdown
3 years ago
|
# Trait bound Typemap
|
||
|
|
||
|
This crate offers typemaps that restrict a given type in their
|
||
|
trait and therefore offer additional trait implementations such as `Clone`.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
```rust
|
||
|
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
|