* Made arrays with 32 elements or less never encode their length
* Removed `write_fixed_array_length` and `skip_fixed_array_length` as this was based on incorrect assumptions on how serde and bincode 1 works
---------
Co-authored-by: Victor Koenders <victor.koenders@qrtech.se>
* Improved encoding and decoding speed of Vec<u8>
* Added black_box calls to benches/string.rs
Added a SizeWriter because someone finally has a benchmark to show it's faster
* Improved performance for `impl<T> Encode for [T]`
* Added #[inline] to `impl Encoder for EncoderImpl`
---------
Co-authored-by: Victor Koenders <victor.koenders@qrtech.se>
This makes it match the implementation for Decode which is
already supports up to 16 fields.
Signed-off-by: Gerd Zellweger <mail@gerdzellweger.com>
Signed-off-by: Gerd Zellweger <mail@gerdzellweger.com>
* Add impl Encode for [T], where T: Encode
Since Encode takes a reference, this allows us to encode &[T] directly
using this implementation. The encoding scheme is the same as for
Vec<T>.
This also makes the implementation for &[u8] superfluous, since we get
an implementation for [u8] by virtue of u8 implementing encode. This
also gives us free implementations for &[u16], &[u32], etc. which is
quite useful. Nonetheless, we keep the implementation for &[u8] around,
because the implementation can directly write a large number of bytes,
which can be more efficient than the generic implementation.
* Remove redundant Encode implementations
Since we've implemented Encode for [T], this makes the implementation
for Box<[T]> redundant (since we have a blanket implementation for
Box<T>), and ditto for &[T], which this change replaces by combining the
implementations for [T] and &T.
* Reinclude comment about Encode specialization for &[u8]
* Rewrite: seperated Decode and BorrowDecode
* Fixed cargo.toml issues
* Fixed clippy warning
* Removed the `impl_tuples` macro call with manually exported code
* Replaced the generated code in `impl_tuples` with the macro instead
* Implemented BorrowDecode for Box<[T]>
* Added a test to see if zoxide can be ported to bincode 2
* Added a test for Arc<str>
* Made several `Encode` implementations require `T: ?Sized`
* Implemented Decode for Arc<str>
* Added BlockedTODO links to commented out code
* Fixed clippy and lint issues
* Updated virtue dependency in fuzz lockfile
* Added cross platform tests
* Added all cross platforms
* Fixed an issue where `usize` and `isize` would be encoded wrong on 32 bit platforms
* Made the cross platform tests actually run on the platforms
* Disabled cross targets that don't build right now
* Fixed a failing test on 32 bit platforms, re-enabled all platforms for testing
* Disabled failing platforms
* Fixed an issue where serde would decode a sequence with an u32 instead of a usize
* Added serde to the `the_same` test for roundtrips, fixed several issues.
* Fixed backwards compatibility for result, ipv4addr and ipv6addr
* Processed feedback
* Moved Configuration::standard() and ::legacy() to the config module
* Fixed issue with config that would overwrite the limit, added a checklist on adding config variables