diff --git a/compiler/rustc_serialize/src/serialize.rs b/compiler/rustc_serialize/src/serialize.rs index 4213d0a4650e9..32a301a28ae8e 100644 --- a/compiler/rustc_serialize/src/serialize.rs +++ b/compiler/rustc_serialize/src/serialize.rs @@ -336,15 +336,11 @@ impl, const N: usize> Encodable for [T; N] { } } -impl Decodable for [u8; N] { - fn decode(d: &mut D) -> [u8; N] { +impl, const N: usize> Decodable for [T; N] { + fn decode(d: &mut D) -> [T; N] { let len = d.read_usize(); assert!(len == N); - let mut v = [0u8; N]; - for i in 0..len { - v[i] = Decodable::decode(d); - } - v + std::array::from_fn(move |_| Decodable::decode(d)) } }