sark-json 0.26.4

Borrowed JSON decoding and streaming encoding for sark
Documentation
use sark_json::{parsing, writing};
pub mod common;
use crate::common::decode::Number;

#[test]
fn direct_codegen() {
    let message = <Number as parsing::Decode>::decode_ref(br#"{"value":7}"#)
        .expect("the literal message must decode");
    assert_eq!(message.value, 7);
    assert_eq!(
        writing::TryEncode::try_encode(&message).expect("encode"),
        br#"{"value":7}"#
    );
}

#[test]
fn integer_leading_zero() {
    let invalid = br#"{"value":01}"#;
    assert!(matches!(
        <Number as parsing::Decode>::decode_ref(invalid),
        Err(parsing::Error::Parse(sark_json::Error::Invalid))
    ));
    assert!(matches!(
        <Number as parsing::Request>::decode(invalid),
        Err(parsing::Error::Parse(sark_json::Error::Invalid))
    ));
    let zero =
        <Number as parsing::Request>::decode(br#"{"value":0}"#).expect("zero integer must decode");
    assert_eq!(zero.value, 0);
}