serde-byte-array 0.1.2

Optimized handling of `[u8; N]` for Serde
Documentation
use serde::{Deserialize, Serialize};
use serde_byte_array::ByteArray;
use serde_test::{assert_tokens, Token};

#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct Test<'a> {
    #[serde(with = "serde_byte_array")]
    array: [u8; 314],

    #[serde(with = "serde_byte_array", borrow)]
    array_ref: &'a [u8; 314],

    #[serde(with = "serde_byte_array")]
    byte_array: ByteArray<314>,

    #[serde(with = "serde_byte_array", borrow)]
    byte_array_ref: &'a ByteArray<314>,

    #[serde(with = "serde_byte_array")]
    opt_array: Option<[u8; 314]>,

    #[serde(with = "serde_byte_array")]
    opt_bytearray: Option<ByteArray<314>>,
}
#[test]
fn test() {
    let test = Test {
        array: [0; 314],

        array_ref: &[1; 314],

        byte_array: [2u8; 314].into(),

        byte_array_ref: (&[3; 314]).into(),

        opt_array: Some([4; 314]),

        opt_bytearray: Some([5u8; 314].into()),
    };

    assert_tokens(
        &test,
        &[
            Token::Struct {
                name: "Test",
                len: 6,
            },
            Token::Str("array"),
            Token::Bytes(&[0; 314]),
            Token::Str("array_ref"),
            Token::BorrowedBytes(&[1; 314]),
            Token::Str("byte_array"),
            Token::Bytes(&[2; 314]),
            Token::Str("byte_array_ref"),
            Token::BorrowedBytes(&[3; 314]),
            Token::Str("opt_array"),
            Token::Some,
            Token::Bytes(&[4; 314]),
            Token::Str("opt_bytearray"),
            Token::Some,
            Token::Bytes(&[5; 314]),
            Token::StructEnd,
        ],
    );
}