Git Product home page Git Product logo

weirde's Introduction

POC Rust - library to De-Serialize Protobuf-Messages

Supported Wire-Types

  • Varint for u64
  • Len for String

About this minimal (non productional) lib

It has two lib modules

  • deserialize (convert from binary hex value to on of the supported variants, which will have contain the field-number and the value)
  • serialize (convert a type that implements Proto into binary protobuf message hex-value)

For more information about the Encoding rules refer to the (official documentation)[https://protobuf.dev/programming-guides/encoding/]

Verify values with protoscope

For installation and usage documentation of protoscope refer the (protoscope github repo)[https://github.com/protocolbuffers/protoscope/] (As an alternative, in-browser tool see (protobufpal)[https://www.protobufpal.com/])

  • write a pseudo message into file

    echo '1: 42' > msg.txt
    echo '2: {"Foo"}' >> msg.txt
    
  • convert to binary

    protoscope -s msg.txt > msg.bin
    # look at hex value
    xxd msg.bin
    
  • to go from bin to message

    protoscope msg.bin
    
    

Next Steps (low hanging fruit)

  • Support other wire types (other VARINTs like bool, signed numbers, repeated types, nexted types etc.)
  • Implement derive-macro for Proto (at least on structs), which internally converts every field to it's WireType equivalent and calls serialize on it.

weirde's People

Contributors

niilz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.