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)); }