- Rename
Error
variants
- Allow multiple attributes in a single
#[protocol(...)]
- Require unquoted expressions in attributes
- Use nested metas for all lists in attributes
- Add
#[protocol(ctx_generics(...))]
- Improve attribute parsing and validation
- Impose
non_exhaustive
onError
- Split
Protocol
intoProtocolRead
andProtocolWrite
- Split
ExternallyLengthPrefixed
intoTaggedRead
andUntaggedWrite
- Convert
FlexibleArrayMember
toFlexibleArrayMemberRead
- Split
BitField
intoBitFieldWrite
andBitFieldRead
- Implement
TaggedRead
,UntaggedWrite
FlexibleArrayMemberRead
on all list and map types andOption
- Add
Error
variant for failedTryFrom
conversion forTaggedRead
tags - Add generic
Tag
parameter toTaggedRead
- Allow for
#[protocol(tag(type = "<type>", write_value = "<expr>"))]
attribute macro - Unimplement
ProtocolRead
andBitFieldRead
onOption
- Create
Discriminable
trait for obtainingenum
discriminants - Additionally derive
Discriminable
,TaggedRead
,UntaggedWrite
- Implement number-related traits on
usize
andisize
- Set MSRV at 1.63.0
- Impose
Send + Sync
bounds onError::Other
- Delete
EnumExt
- Bump dependencies, and rust version to 2021
- Make lifetime generics work
- Handle context using generics instead of
Any
- Improve derive macro hygiene
- Improve derive macro error reporting
- Do not trigger rust-lang/rust#120363 with generated code
- Add
Other
error type
- Use
std::net
instead ofcore::net
- Implement
Protocol
oni128
,u128
,PhantomPinned
,BinaryHeap
- Fix
length
attribute not working in enum variant
- Implement
ExternallyLengthPrefixed
onHashMap
,BTreeMap
,String
- Do not implement
Protocol
onchar
,range
,HashMap
,BTreeMap
- Implement protocol on
Ipv4Addr
andIpv6Addr
,(T0, )
,()
,Box
- Rename
Enum
trait toEnumExt
- Delete
Settings
, replace withByteOrder
- Clean up
Error
- Add context to all parse functions
- Remove
#[repr(...)]
, instead specify repr in#[protocol(discriminant = "...")]
- Remove Hints, LengthPrefixed, etc.
- Add
#[protocol(write_value = "<expr>")]
for automatically writing arbitrary element value - Replace
#[protocol(length_prefix(<kind>(<field>)))]
with#[protocol(length = "<expr>")]
- Check attribute applicability in every context
- Require discriminants type to be specified for an enum