Skip to content

Commit

Permalink
Implement Default for Configuration (#575)
Browse files Browse the repository at this point in the history
  • Loading branch information
VictorKoenders authored Aug 18, 2022
1 parent 3ff7fb0 commit 4442c9c
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@ pub struct Configuration<E = LittleEndian, I = Varint, A = WriteFixedArrayLength
_l: PhantomData<L>,
}

// When adding more features to configuration, follow these steps:
// - Create 2 or more structs that can be used as a type (e.g. Limit and NoLimit)
// - Add an `Internal...Config` to the `internal` module
// - Make sure `Config` and `impl<T> Config for T` extend from this new trait
// - Add a generic to `Configuration`
// - Add this generic to `impl<...> Default for Configuration<...>`
// - Add this generic to `const fn generate<...>()`
// - Add this generic to _every_ function in `Configuration`
// - Add your new methods

/// The default config for bincode 2.0. By default this will be:
/// - Little endian
/// - Variable int encoding
Expand All @@ -62,7 +72,13 @@ pub const fn legacy() -> Configuration<LittleEndian, Fixint, WriteFixedArrayLeng
generate()
}

const fn generate<_E, _I, _A, _L>() -> Configuration<_E, _I, _A, _L> {
impl<E, I, A, L> Default for Configuration<E, I, A, L> {
fn default() -> Self {
generate()
}
}

const fn generate<E, I, A, L>() -> Configuration<E, I, A, L> {
Configuration {
_e: PhantomData,
_i: PhantomData,
Expand All @@ -71,15 +87,6 @@ const fn generate<_E, _I, _A, _L>() -> Configuration<_E, _I, _A, _L> {
}
}

// When adding more features to configuration, follow these steps:
// - Create 2 or more structs that can be used as a type (e.g. Limit and NoLimit)
// - Add an `Internal...Config` to the `internal` module
// - Make sure `Config` and `impl<T> Config for T` extend from this new trait
// - Add a generic to `Configuration`
// - Add this generic to `const fn generate<...>()`
// - Add this generic to _every_ function in `Configuration`
// - Add your new methods

impl<E, I, A, L> Configuration<E, I, A, L> {
/// Makes bincode encode all integer types in big endian.
pub const fn with_big_endian(self) -> Configuration<BigEndian, I, A, L> {
Expand Down

0 comments on commit 4442c9c

Please sign in to comment.