rustbif-0.0.0 has been yanked.
A simple generic serialization/deserialization framework
TODO
- Fix enum tags: limit to positive numbers up to u32, allow const expressions in discriminators. Negative disriminators? Consider removing support for explicit variant discriminators.
- Errors (remove unwraps and panics), figure out if need to insert
?;Ok(...)
or return directly. - Decl macro for tuples.
- Move samples and main to tests and Rust examples
- 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. - [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.
- 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).
- Async version of the library.
- Check Git formats
- 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?
- 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.