Joined the 2 Sealed traits into a single one

This commit is contained in:
Victor Koenders 2021-10-21 14:27:03 +02:00
parent 707d0d238f
commit dae645f675
6 changed files with 16 additions and 24 deletions

View File

@ -1,9 +1,8 @@
use super::{ use super::{
read::{BorrowReader, Reader}, read::{BorrowReader, Reader},
sealed::Sealed,
BorrowDecoder, Decoder, BorrowDecoder, Decoder,
}; };
use crate::config::Config; use crate::{config::Config, utils::Sealed};
/// A Decoder that reads bytes from a given reader `R`. /// A Decoder that reads bytes from a given reader `R`.
/// ///

View File

@ -1,15 +1,16 @@
//! Decoder-based structs and traits. //! Decoder-based structs and traits.
use crate::{config::Config, error::DecodeError};
mod decoder; mod decoder;
mod impl_core; mod impl_core;
mod impl_tuples; mod impl_tuples;
mod impls; mod impls;
pub mod read;
pub use self::decoder::DecoderImpl;
use self::read::{BorrowReader, Reader}; use self::read::{BorrowReader, Reader};
use crate::{config::Config, error::DecodeError, utils::Sealed};
pub mod read;
pub use self::decoder::DecoderImpl;
/// Trait that makes a type able to be decoded, akin to serde's `DeserializeOwned` trait. /// Trait that makes a type able to be decoded, akin to serde's `DeserializeOwned` trait.
/// ///
@ -36,7 +37,7 @@ impl<'de, T: Decode> BorrowDecode<'de> for T {
} }
/// Any source that can decode basic types. This type is most notably implemented for [Decoder]. /// Any source that can decode basic types. This type is most notably implemented for [Decoder].
pub trait Decoder: sealed::Sealed { pub trait Decoder: Sealed {
/// The concrete [Reader] type /// The concrete [Reader] type
type R: Reader; type R: Reader;
@ -88,9 +89,3 @@ where
T::borrow_reader(self) T::borrow_reader(self)
} }
} }
pub(crate) mod sealed {
pub trait Sealed {}
impl<'a, T> Sealed for &'a mut T where T: Sealed {}
}

View File

@ -1,7 +1,7 @@
//! Contains //! Contains
use super::{sealed::Sealed, write::Writer, Encoder}; use super::{write::Writer, Encoder};
use crate::config::Config; use crate::{config::Config, utils::Sealed};
/// An Encoder that writes bytes into a given writer `W`. /// An Encoder that writes bytes into a given writer `W`.
/// ///

View File

@ -4,12 +4,12 @@ mod encoder;
mod impl_tuples; mod impl_tuples;
mod impls; mod impls;
use crate::{config::Config, error::EncodeError}; use self::write::Writer;
use crate::{config::Config, error::EncodeError, utils::Sealed};
pub mod write; pub mod write;
pub use self::encoder::EncoderImpl; pub use self::encoder::EncoderImpl;
use self::write::Writer;
/// Any source that can encode types. This type is most notably implemented for [Encoder]. /// Any source that can encode types. This type is most notably implemented for [Encoder].
/// ///
@ -20,7 +20,7 @@ pub trait Encode {
} }
/// Helper trait to encode basic types into. /// Helper trait to encode basic types into.
pub trait Encoder: sealed::Sealed { pub trait Encoder: Sealed {
/// The concrete [Writer] type /// The concrete [Writer] type
type W: Writer; type W: Writer;
@ -50,9 +50,3 @@ where
T::config(self) T::config(self)
} }
} }
pub(crate) mod sealed {
pub trait Sealed {}
impl<'a, T> Sealed for &'a mut T where T: Sealed {}
}

View File

@ -32,6 +32,7 @@ extern crate alloc;
extern crate std; extern crate std;
mod features; mod features;
pub(crate) mod utils;
pub(crate) mod varint; pub(crate) mod varint;
pub use features::*; pub use features::*;

3
src/utils.rs Normal file
View File

@ -0,0 +1,3 @@
pub trait Sealed {}
impl<'a, T> Sealed for &'a mut T where T: Sealed {}