shvproto 6.1.6

Rust implementation of the SHV protocol
Documentation
#![cfg_attr(feature = "specialization", feature(min_specialization))]

pub mod chainpack;
pub mod cpon;
#[cfg(feature = "cq")]
pub mod jaq;
pub mod json;
pub mod datetime;
pub mod decimal;
pub mod metamap;
pub mod reader;
pub mod rpcvalue;
pub mod util;
pub mod writer;
mod textrdwr;
#[cfg(feature = "serde")]
mod serde;

pub use datetime::DateTime;
pub use decimal::Decimal;
pub use metamap::MetaMap;
pub use reader::{ReadError, ReadResult, Reader};
pub use rpcvalue::Value;
pub use rpcvalue::{Blob, List, Map, IMap, RpcValue};
pub use writer::{WriteResult, Writer};

pub use chainpack::{ChainPackReader, ChainPackWriter};
pub use cpon::{CponReader, CponWriter};
pub use json::{JsonReader, JsonWriter};

pub use libshvproto_macros::{FromRpcValue, ToRpcValue};

#[cfg(feature = "serde")]
pub use crate::serde::{ValueSerializer, to_rpcvalue, ValueDeserializer, from_rpcvalue};

fn u8_to_hex(num: u8) -> (u8, u8) {
    let nibble_to_hex = |b| if b < 10 {
        b'0' + b
    }
    else {
        b'a' + (b - 10)
    };
    let high = num / 16;
    let low = num % 16;
    (nibble_to_hex(high), nibble_to_hex(low))
}