rustbif 0.0.0

Rust Binary Format
Documentation
rustbif-0.0.0 has been yanked.

A simple generic serialization/deserialization framework

TODO

  1. Fix enum tags: limit to positive numbers up to u32, allow const expressions in discriminators. Negative disriminators? Consider removing support for explicit variant discriminators.
  2. Errors (remove unwraps and panics), figure out if need to insert ?;Ok(...) or return directly.
  3. Decl macro for tuples.
  4. Move samples and main to tests and Rust examples
  5. Move out to repo cerdito, republish. Create 3 crates. Choose the name for the third crate: cerdito_varcode, cerdito_varflow, cerdito_varstream. Would be nice to link the format name to PCP Linked Data which was the objective of the format.
  6. [T; N] doesn't implement Default and user can't implement it either. Default is required when "new" program reads "old" data. Need to address it.
  7. Implement Arr<bool, N>, Arr<char, N>, Arr<u8, N>, ..., Arr<u128, N>, Arr<i8, N>, ..., Arr<i128, N>, Arr<f32, N>, Arr<f64, N>, VArr, VArr, VArr, ..., VArr, VArr, ..., VArr, VArr, VArr; and Arr<T; N> (we need this to impl Default), VArr (this is the same as Vec, however, it is good to have a newtype in case we need to implement foreign trait).
  8. Async version of the library.
  9. Check Git formats
  10. Consider using Result<T, E> in your datastructures -- this is a transparent (or not?) wrapper that wont appear on the wire and that will only capture success/failure of sub-structure decoding. How to encode data that has Err()s?
  11. Consider using attribute (default) to control compat behaviour at the runtime: when a field is missing, return Ok(default()) OR Error(); Or try to figure out if the type impl Default or not. Explicit attribute could be better, for example, the attr can also provide value for the default.