Expand description

Different reference kinds in Rust.

Provides 2 kinds of reference: immutable and mutable. All of them represented in one enum RefKind, which allows you to store immutable and mutable references together.

In addition, this crate contains RefKindMap which is a HashMap of reference kinds. This structure can easily be created from HashMap iterator (immutable or mutable one):

use std::collections::HashMap;
use ref_kind::RefKindMap;

let mut map = HashMap::new();
map.insert("Hello World", 0);
map.insert("The Answer to the Ultimate Question of Life, the Universe, and Everything", 42);

let mut refs = map.iter_mut().map(|(&k, v)| (k, v)).collect::<RefKindMap<_, _>>();

Then it can be used to retrieve multiple mutable references from the HashMap:

let hello = refs.move_mut("Hello World").unwrap();
let answer = refs.move_mut("The Answer to the Ultimate Question of Life, the Universe, and Everything").unwrap();

assert_eq!(*hello, 0);
assert_eq!(*answer, 42);

No unsafe code is needed!

Structs

Hash map for different kinds of reference.

Enums

Provides different kinds of reference: immutable or mutable one.