Skip to content

Commit 118e4b8

Browse files
authored
Merge pull request #48 from sosthene-nitrokey/deserializing-bare-array-ref
Implement deserializing &'de [u8; N]
2 parents 76caff6 + 0ef6a89 commit 118e4b8

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/de.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,16 @@ impl<'de, const N: usize> Deserialize<'de> for [u8; N] {
7373
}
7474
}
7575

76+
impl<'de, const N: usize> Deserialize<'de> for &'de [u8; N] {
77+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
78+
where
79+
D: Deserializer<'de>,
80+
{
81+
let arr: &'de ByteArray<N> = serde::Deserialize::deserialize(deserializer)?;
82+
Ok(&arr)
83+
}
84+
}
85+
7686
impl<'de, const N: usize> Deserialize<'de> for ByteArray<N> {
7787
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
7888
where

tests/test_derive.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ struct Test<'a> {
1313
#[serde(with = "serde_bytes")]
1414
array: [u8; 314],
1515

16+
#[serde(with = "serde_bytes")]
17+
borrowed_array: &'a [u8; 314],
18+
1619
#[serde(with = "serde_bytes")]
1720
vec: Vec<u8>,
1821

@@ -67,6 +70,7 @@ fn test() {
6770
let test = Test {
6871
slice: b"...",
6972
array: [0; 314],
73+
borrowed_array: &[1; 314],
7074
vec: b"...".to_vec(),
7175
bytes: Bytes::new(b"..."),
7276
byte_array: ByteArray::new([0; 314]),
@@ -88,12 +92,14 @@ fn test() {
8892
&[
8993
Token::Struct {
9094
name: "Test",
91-
len: 16,
95+
len: 17,
9296
},
9397
Token::Str("slice"),
9498
Token::BorrowedBytes(b"..."),
9599
Token::Str("array"),
96100
Token::Bytes(&[0; 314]),
101+
Token::Str("borrowed_array"),
102+
Token::BorrowedBytes(&[1; 314]),
97103
Token::Str("vec"),
98104
Token::Bytes(b"..."),
99105
Token::Str("bytes"),

0 commit comments

Comments
 (0)