Add Deref and DerefMut implementations for PrimaryMap.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
//! Densely numbered entity references as mapping keys.
|
||||
use std::marker::PhantomData;
|
||||
use std::ops::{Index, IndexMut};
|
||||
use std::ops::{Deref, DerefMut, Index, IndexMut};
|
||||
use std::slice;
|
||||
use std::vec::Vec;
|
||||
use {EntityRef, Iter, IterMut, Keys};
|
||||
@@ -145,6 +145,26 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<K, V> Deref for PrimaryMap<K, V>
|
||||
where
|
||||
K: EntityRef,
|
||||
{
|
||||
type Target = [V];
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.elems
|
||||
}
|
||||
}
|
||||
|
||||
impl<K, V> DerefMut for PrimaryMap<K, V>
|
||||
where
|
||||
K: EntityRef,
|
||||
{
|
||||
fn deref_mut(&mut self) -> &mut [V] {
|
||||
&mut self.elems
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -322,4 +342,12 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn deref() {
|
||||
let mut m = PrimaryMap::<E, isize>::new();
|
||||
let _: &[isize] = m.as_ref();
|
||||
let _: &mut [isize] = m.as_mut();
|
||||
let _: &[isize] = &m;
|
||||
let _: &mut [isize] = &mut m;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user