Skip to content

Commit 1fae762

Browse files
committed
Impl Deref/DerefMut for Array
1 parent a5ac7b2 commit 1fae762

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/array.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::BigArray;
2-
use core::ops::{Index, IndexMut};
2+
use core::ops::{Deref, DerefMut, Index, IndexMut};
33
use serde::{Deserialize, Deserializer, Serialize, Serializer};
44

55
/// An array newtype usable for nested structures
@@ -42,6 +42,20 @@ impl<T: Serialize, const N: usize> Serialize for Array<T, N> {
4242
}
4343
}
4444

45+
impl<T, const N: usize> Deref for Array<T, N> {
46+
type Target = [T; N];
47+
48+
fn deref(&self) -> &Self::Target {
49+
&self.0
50+
}
51+
}
52+
53+
impl<T, const N: usize> DerefMut for Array<T, N> {
54+
fn deref_mut(&mut self) -> &mut Self::Target {
55+
&mut self.0
56+
}
57+
}
58+
4559
impl<T, I, const N: usize> Index<I> for Array<T, N>
4660
where
4761
[T]: Index<I>,

tests/nested.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ fn test() {
1616
let j = serde_json::to_string(&s).unwrap();
1717
let s_back = serde_json::from_str::<S>(&j).unwrap();
1818
assert!(&s.arr[..] == &s_back.arr[..]);
19+
assert_eq!(s.arr.len(), 65);
1920
}

0 commit comments

Comments
 (0)