#serialization #protobuf #finance #model #transaction #bindings #price

bin+lib ledger-models

A comprehensive model library for financial products (securities, prices, transactions, etc). Protobuf used for serialization, with language-specific implementations

70 releases

0.1.92 Aug 29, 2024
0.1.90 Jul 27, 2024
0.1.75 Mar 30, 2024
0.1.68 Nov 26, 2023
0.1.11 Dec 29, 2022

#590 in Encoding

Download history 13/week @ 2024-08-09 1/week @ 2024-08-16 58/week @ 2024-08-23 47/week @ 2024-08-30 34/week @ 2024-09-13 106/week @ 2024-09-20 14/week @ 2024-09-27 2/week @ 2024-10-04 2/week @ 2024-10-11

3,915 downloads per month

Apache-2.0

330KB
7K SLoC

Rust Types Derived from Proto Files

Context

This project contains protobuf models of financial objects & request/response formats for APIs; as well as language specific bindings.

Generating Types

To generate the types run cargo run --bin gen. This will overwrite the files in ledger-models-rust. Any new file must be exported in lib.rs.

This is included in the compile.sh script which creates types across all languages.

Project structure

Tonic/Prost is used to generate language bindings in Rust. Auto-generated files are created in the format fintekkers...rs.

Hand-written wrappers are included in the folder fintekkers/wrappers/file.rs. The purpose of this code is to make it easier to use the Rust implementation of fintekkers without having gitto understand all the nuance of protobufs, or nuances of performance optimizations made in the proto schema.

DevOps

Preparing Rust to publish

to publish a new version do the following

  1. generate the new protobus using the compile script
  2. export any new models in lib.rs
  3. bump the package version in Cargo.toml
  4. merge your pr then create a release tagged with the version, if the version = 0.1.1, set the tag to v0.1.1

Dependencies

~9–18MB
~245K SLoC