Commit Graph

51 Commits

Author SHA1 Message Date
Ada Alakbarova 5a8ff74ab0 fix typo (#776) 2025-04-09 09:21:37 +00:00
Trangar f98bc70757 Fix CI and clippy (#747)
* Fix CI and clippy

* Fix CI

* Disable code coverage
2025-03-02 16:48:16 +01:00
Trangar e0e5402094 Fixed broken commit to trunk (#687)
Co-authored-by: Victor Koenders <victor.koenders@qrtech.se>
2023-12-15 08:08:38 +01:00
mzachar 67564d2bd4 Implement Encode & Decode for Wrapping<T> types (#686)
* Implement Encode & Decode for Wrapping<T> types

* Implement Encode & Decode for Reverse<T> types
2023-12-15 06:45:27 +00:00
Richard Pringle 8f3f84ae94 Use const functions where possible (#684) 2023-12-14 11:56:51 +01:00
Sebastian Hahn b31bb67c59 Add getters for current configuration values (#681)
This was inspired by suggestions provided in #598, thanks a lot to
@VictorKoenders.

Fixes #598.

Co-authored-by: Trangar <gpg@trangar.com>
2023-12-11 09:57:32 +01:00
Trangar e03c9b06db Added unty dependency and added type checks (#667)
* Added unty dependency and added type checks

* Bumped unty 0.0.2

* Bump unty to 0.0.3

* Removed unneeded + Sized requirements
Optimize encode for [T; N]
Made BinaryHeap<T> proxy to Vec<T>
Made VecDeque decode/borrowdecode proxy to Vec<T>
Optimize VecDeque::<u8>::Encode to write 2 slices directly
Optimize Vec<u8> borrowdecode implementation

---------

Co-authored-by: Victor Koenders <git@trang.ar>
2023-09-28 17:32:11 +02:00
Trangar dc468b4bed Made arrays never encode their length (#625)
* 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>
2023-03-30 15:09:33 +02:00
Trangar 9880abe499 Improved encoding and decoding speed of Vec<u8> (#619)
* 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>
2023-03-30 11:45:47 +02:00
Trangar 55d66480f5 Fixed new clippy lint in rust 1.65.0 (#603) 2022-11-22 16:25:18 +01:00
trevyn cb46ce13b4 Move generated files to `target/generated/bincode` (#600) 2022-11-03 09:13:09 +01:00
Gerd Zellweger 954abe415e Implement Encode for tuples with up-to 16 elements. (#583)
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>
2022-09-28 09:42:04 +02:00
Lúcás Meier 357d7d3c0e Add impl Encode for [T], where T: Encode (#542)
* 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]
2022-06-05 18:41:43 +02:00
Trangar 86e03aeda7 Rewrite: seperated Decode and BorrowDecode (#526)
* 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
2022-06-04 15:23:55 +02:00
Trangar 883278fa0c Added cross platform tests workflow (#534)
* 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
2022-04-04 14:09:42 +02:00
Pietro 1c5041390f Add reference implementation for Writer and remove unnecessary lifetimes from Reader's one (#507) 2022-02-23 11:08:28 +01:00
Trangar 58dc788dfa Fix/issue 500 (#503)
* 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
2022-02-07 16:52:15 +01:00
Trangar 59b787cbf8 Moved Configuration::standard() and ::legacy() to the config module (#481)
* 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
2022-01-19 16:46:25 +01:00
Trangar a5e57d51d8 Update documentation (#480)
* Updated documentation

* Updated spec.md
2022-01-18 15:17:58 +01:00
Lena Hellström 8106eadf66 Switch Encode to take &mut E (#471) 2022-01-13 12:26:09 +01:00
Trangar bb3612103a Fixed clippy warnings (#447) 2021-12-10 17:39:35 +01:00
Trangar 8c1279feab functions to enable encoding/decoding serde types (#422)
* functions to enable encoding/decoding serde types
* Removed dev feature I forgot to remove
* Centralized option variant and len() decoding/encoding
2021-11-08 12:38:29 +01:00
Victor Koenders 382b2c7a8f Fixed clippy lint, removed function that was only used in 1 place 2021-10-24 18:06:16 +02:00
Lena Hellström 539906f441 Optimize performance of slice writing 2021-10-22 14:47:05 +02:00
Victor Koenders bd994e354d Updated documentation of Encode, added an example to lib.rs 2021-10-21 14:45:16 +02:00
Victor Koenders dae645f675 Joined the 2 Sealed traits into a single one 2021-10-21 14:27:03 +02:00
Victor Koenders 151edf46d3 Included spec.md into cargo's documentation, fixed the issues, changed the [u8; N] implementations to [T; N] 2021-10-21 11:57:16 +02:00
Lena Hellström 684f2562b1 Config rewrite (#412)
Rewrite the config system to be slightly more friendly to adding new options
2021-10-17 21:07:31 +02:00
Victor Koenders 4807ea6be2 Added warning on unused lifetimes, fixed warnings 2021-10-17 16:43:18 +02:00
Lena Hellström e232454936 Refactor and rename encoders 2021-10-17 16:22:14 +02:00
Victor Koenders a0469e08ef Added support for NonZero* types 2021-10-16 14:14:15 +02:00
Victor Koenders 9420d03762 Added support for Range<T>, RangeInclusive<T> and Bound<T> 2021-10-16 13:59:48 +02:00
Victor Koenders acbd385649 Added core::time::Duration and std::time::SystemTime 2021-10-16 13:32:12 +02:00
Victor Koenders 1d6379e715 Added support for Cell and RefCell 2021-10-16 12:04:23 +02:00
Victor Koenders 07f49e878e Added support for Vec<T>, Box<T> and Box<[T]> 2021-10-16 11:41:59 +02:00
Victor Koenders 82924aa96e Added support for Option<T> and Result<T, U> 2021-10-16 11:03:25 +02:00
Victor Koenders 960b6066cd Added an option to encode a fixed array length or to skip it 2021-10-14 21:31:47 +02:00
Victor Koenders 19fed15463 Added support for tuples with up to 8 values 2021-10-14 20:33:03 +02:00
Victor Koenders e4e12c984b Added support for the bool type 2021-10-14 19:34:35 +02:00
Victor Koenders c4cb220fb2 Added support for char encoding/decoding 2021-10-14 19:28:28 +02:00
Victor Koenders bb98b8fcbd Added documentation for the src/enc module 2021-10-14 17:59:23 +02:00
Victor Koenders 254b87c6eb Moved all feature flags to src/features, made the CI run tests on all feature combinations 2021-09-22 16:23:27 +02:00
Victor Koenders 9c7fb85e0e Added support for slices, str, fixed size arrays. Added lifetime to Decode trait 2021-09-22 12:03:00 +02:00
Victor Koenders 78cb27f782 Added decode_ fns 2021-09-22 09:59:13 +02:00
Victor Koenders ccca6ee49e Split Error into EncodeError and DecodeError 2021-09-19 10:52:21 +02:00
Victor Koenders 723bdd312a Turned Config::INT_ENCODING back into a const, made a ton of varint_encode functions 2021-09-19 09:25:47 +02:00
Victor Koenders 7448b7bb87 Moved Encoder to its own file 2021-09-19 08:34:14 +02:00
Victor Koenders 6802edc625 Renamed blob to slice 2021-09-19 08:30:28 +02:00
Victor Koenders 8a4eac82fb Made the encoder respect intencoding, implemented FixintEncoding 2021-09-19 08:28:38 +02:00
Victor Koenders bab0cf4bd1 Started working on bincode_derive 2021-09-13 13:20:47 +02:00