picopb 0.1.0

no_std protobuf parsing for Rust.
Documentation
use picopb::{PbReader, PbWriter};

fn main() {
    let raw = hex::decode("0a0e436f696e4d61726b65744665656410061a473045022100e782034ebee16e8cbad50d4b20c0eeca150892567619ed92abf5fd3100ffa04d0220337f36259fa88419802036109c41f1edcc49e104267cf364ef3cb2e55f077f37").unwrap();

    println!("== > {:?}", hex::encode(&raw));
    let mut rd = PbReader::new(&raw);

    //println!("=> {:?}", rd.next_key());
    //println!("=> {:?}", rd.next_string());
    rd.skip_next_field();
    println!("=> {:?}", rd.next_key());
    println!("=> {:?}", rd.next_varint());
    println!("=> {:?}", rd.next_key());
    println!("=> {:?}", hex::encode(rd.next_bytes().unwrap()));
    println!("=> {:?}", rd.next_key());

    let mut buf = [0u8; 1024];
    let mut wr = PbWriter::new(&mut buf);
    wr.encode_string_field(1, "CoinMarketFeed");
    wr.encode_varint_field(2, 6);
    wr.encode_bytes_field(3, &hex::decode("3045022100e782034ebee16e8cbad50d4b20c0eeca150892567619ed92abf5fd3100ffa04d0220337f36259fa88419802036109c41f1edcc49e104267cf364ef3cb2e55f077f37").unwrap());
    wr.encode_svarint_field(2, 2147483647	);

    println!("== > {:?}", hex::encode(wr.as_bytes()));
    println!("== > {:?}", hex::encode(&raw));
}