| Crates.io | cu-bincode-derive |
| lib.rs | cu-bincode-derive |
| version | 2.0.2 |
| created_at | 2025-12-22 19:14:37.788247+00 |
| updated_at | 2025-12-22 19:14:37.788247+00 |
| description | Implementation of #[derive(Encode, Decode)] for bincode |
| homepage | |
| repository | https://github.com/copper-robotics/cu_bincode |
| max_upload_size | |
| id | 2000134 |
| size | 45,983 |
This is a hard fork of bincode 2 (2.0.1) from crates.io (see first verbatim commit). Do not contact the original authors as per their wishes.
The derive crate for cu-bincode. Implements cu_bincode::Encode and cu_bincode::Decode.
This crate is roughly split into 2 parts:
Most of parsing is done in the src/parse/ folder. This will generate the following types:
Attributes, not being used currentlyVisibility, not being used currentlyDataType either Struct or Enum, with the name of the data type being parsedGenerics the generics part of the type, e.g. struct Foo<'a>GenericConstraints the "where" part of the typeGenerating the code implementation is done in either src/derive_enum.rs and src/derive_struct.rs.
This is supported by the structs in src/generate. The most notable points of this module are:
StreamBuilder is a thin but friendly wrapper around TokenStreamGenerator is the base type of the code generator. This has helper methods to generate implementations:
ImplFor is a helper struct for a single impl A for B construction. In this functions can be defined:
GenerateFnBody is a helper struct for a single function in the above impl. This is created with a callback to FnBuilder which helps set some properties. GenerateFnBody has a stream() function which returns StreamBuilder for the function.For additional derive testing, see the test cases in ../tests
For testing purposes, all generated code is outputted to the current target/generated/cu_bincode folder, under file name <struct/enum name>_Encode.rs and <struct/enum name>_Decode.rs. This can help with debugging.