pub trait SizedEncode: Encode {
const MAX_ENCODED_SIZE: usize;
}
Expand description
Denotes a size-constrained, encodable type.
When using Encode
, the size of the resulting encoding cannot always be known beforehand.
This trait defines an upper bound for these sizes.
Note that whilst technically having a size limit, alloc::vec::Vec
, alloc::string::String
, etc. do not implement this trait.
The general rule is that the size limit must be a substantial part of a type’s design to constitute implementing this trait.
Also note that – in practice – this trait is not strictly enforceable. Users of this trait should assume that it is mostly properly defined, but still with the possibility of it not being such.
Required Associated Constants§
Sourceconst MAX_ENCODED_SIZE: usize
const MAX_ENCODED_SIZE: usize
The maximum, guaranteed amount of bytes that can result from an encoding.
Implementors of this trait should make sure that no encoding (or decoding) consumes more than the amount specified by this constant.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl SizedEncode for Infallible
impl SizedEncode for Infallible
const MAX_ENCODED_SIZE: usize = 0usize
Source§impl SizedEncode for c_void
impl SizedEncode for c_void
const MAX_ENCODED_SIZE: usize = 0usize
Source§impl SizedEncode for IpAddr
impl SizedEncode for IpAddr
const MAX_ENCODED_SIZE: usize = 17usize
Source§impl SizedEncode for SocketAddr
impl SizedEncode for SocketAddr
const MAX_ENCODED_SIZE: usize = 27usize
Source§impl SizedEncode for bool
impl SizedEncode for bool
const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for char
impl SizedEncode for char
const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for f16
Available on crate feature f16
only.
impl SizedEncode for f16
f16
only.const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for f32
impl SizedEncode for f32
const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for f64
impl SizedEncode for f64
const MAX_ENCODED_SIZE: usize = 8usize
Source§impl SizedEncode for f128
Available on crate feature f128
only.
impl SizedEncode for f128
f128
only.const MAX_ENCODED_SIZE: usize = 16usize
Source§impl SizedEncode for i8
impl SizedEncode for i8
const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for i16
impl SizedEncode for i16
const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for i32
impl SizedEncode for i32
const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for i64
impl SizedEncode for i64
const MAX_ENCODED_SIZE: usize = 8usize
Source§impl SizedEncode for i128
impl SizedEncode for i128
const MAX_ENCODED_SIZE: usize = 16usize
Source§impl SizedEncode for isize
impl SizedEncode for isize
const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for u8
impl SizedEncode for u8
const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for u16
impl SizedEncode for u16
const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for u32
impl SizedEncode for u32
const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for u64
impl SizedEncode for u64
const MAX_ENCODED_SIZE: usize = 8usize
Source§impl SizedEncode for u128
impl SizedEncode for u128
const MAX_ENCODED_SIZE: usize = 16usize
Source§impl SizedEncode for ()
impl SizedEncode for ()
const MAX_ENCODED_SIZE: usize = 0usize
Source§impl SizedEncode for usize
impl SizedEncode for usize
const MAX_ENCODED_SIZE: Self = 2usize
Source§impl SizedEncode for PhantomPinned
impl SizedEncode for PhantomPinned
const MAX_ENCODED_SIZE: usize = 0usize
Source§impl SizedEncode for Ipv4Addr
impl SizedEncode for Ipv4Addr
const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for Ipv6Addr
impl SizedEncode for Ipv6Addr
const MAX_ENCODED_SIZE: usize = 16usize
Source§impl SizedEncode for SocketAddrV4
impl SizedEncode for SocketAddrV4
const MAX_ENCODED_SIZE: usize = 6usize
Source§impl SizedEncode for SocketAddrV6
impl SizedEncode for SocketAddrV6
const MAX_ENCODED_SIZE: usize = 26usize
Source§impl SizedEncode for NonZero<i8>
impl SizedEncode for NonZero<i8>
const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for NonZero<i16>
impl SizedEncode for NonZero<i16>
const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for NonZero<i32>
impl SizedEncode for NonZero<i32>
const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for NonZero<i64>
impl SizedEncode for NonZero<i64>
const MAX_ENCODED_SIZE: usize = 8usize
Source§impl SizedEncode for NonZero<i128>
impl SizedEncode for NonZero<i128>
const MAX_ENCODED_SIZE: usize = 16usize
Source§impl SizedEncode for NonZero<isize>
impl SizedEncode for NonZero<isize>
const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for NonZero<u8>
impl SizedEncode for NonZero<u8>
const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for NonZero<u16>
impl SizedEncode for NonZero<u16>
const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for NonZero<u32>
impl SizedEncode for NonZero<u32>
const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for NonZero<u64>
impl SizedEncode for NonZero<u64>
const MAX_ENCODED_SIZE: usize = 8usize
Source§impl SizedEncode for NonZero<u128>
impl SizedEncode for NonZero<u128>
const MAX_ENCODED_SIZE: usize = 16usize
Source§impl SizedEncode for NonZero<usize>
impl SizedEncode for NonZero<usize>
const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for RangeFull
impl SizedEncode for RangeFull
const MAX_ENCODED_SIZE: usize = 0usize
Source§impl SizedEncode for AtomicBool
Available on target_has_atomic="8"
only.
impl SizedEncode for AtomicBool
target_has_atomic="8"
only.const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for AtomicI8
Available on target_has_atomic="8"
only.
impl SizedEncode for AtomicI8
target_has_atomic="8"
only.const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for AtomicI16
Available on target_has_atomic="16"
only.
impl SizedEncode for AtomicI16
target_has_atomic="16"
only.const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for AtomicI32
Available on target_has_atomic="32"
only.
impl SizedEncode for AtomicI32
target_has_atomic="32"
only.const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for AtomicI64
Available on target_has_atomic="64"
only.
impl SizedEncode for AtomicI64
target_has_atomic="64"
only.const MAX_ENCODED_SIZE: usize = 8usize
Source§impl SizedEncode for AtomicIsize
Available on target_has_atomic="ptr"
only.
impl SizedEncode for AtomicIsize
target_has_atomic="ptr"
only.const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for AtomicU8
Available on target_has_atomic="8"
only.
impl SizedEncode for AtomicU8
target_has_atomic="8"
only.const MAX_ENCODED_SIZE: usize = 1usize
Source§impl SizedEncode for AtomicU16
Available on target_has_atomic="16"
only.
impl SizedEncode for AtomicU16
target_has_atomic="16"
only.const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for AtomicU32
Available on target_has_atomic="32"
only.
impl SizedEncode for AtomicU32
target_has_atomic="32"
only.const MAX_ENCODED_SIZE: usize = 4usize
Source§impl SizedEncode for AtomicU64
Available on target_has_atomic="64"
only.
impl SizedEncode for AtomicU64
target_has_atomic="64"
only.const MAX_ENCODED_SIZE: usize = 8usize
Source§impl SizedEncode for AtomicUsize
Available on target_has_atomic="ptr"
only.
impl SizedEncode for AtomicUsize
target_has_atomic="ptr"
only.const MAX_ENCODED_SIZE: usize = 2usize
Source§impl SizedEncode for Duration
impl SizedEncode for Duration
const MAX_ENCODED_SIZE: usize = 12usize
Source§impl SizedEncode for SystemTime
Available on crate feature std
only.
impl SizedEncode for SystemTime
std
only.const MAX_ENCODED_SIZE: usize = 8usize
Source§impl<T, E, Err> SizedEncode for Result<T, E>
impl<T, E, Err> SizedEncode for Result<T, E>
const MAX_ENCODED_SIZE: usize
Source§impl<T: Copy + SizedEncode> SizedEncode for Cell<T>
impl<T: Copy + SizedEncode> SizedEncode for Cell<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized + ToOwned> SizedEncode for Cow<'_, T>
Available on crate feature alloc
only.
impl<T: SizedEncode + ?Sized + ToOwned> SizedEncode for Cow<'_, T>
alloc
only.const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for &T
impl<T: SizedEncode + ?Sized> SizedEncode for &T
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for &mut T
impl<T: SizedEncode + ?Sized> SizedEncode for &mut T
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for Box<T>
Available on crate feature alloc
only.
impl<T: SizedEncode + ?Sized> SizedEncode for Box<T>
alloc
only.const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for Rc<T>
Available on crate feature alloc
only.
impl<T: SizedEncode + ?Sized> SizedEncode for Rc<T>
alloc
only.const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for Arc<T>
Available on crate feature alloc
and target_has_atomic="ptr"
only.
impl<T: SizedEncode + ?Sized> SizedEncode for Arc<T>
alloc
and target_has_atomic="ptr"
only.const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for RefCell<T>
impl<T: SizedEncode + ?Sized> SizedEncode for RefCell<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for Mutex<T>
Available on crate feature std
only.
impl<T: SizedEncode + ?Sized> SizedEncode for Mutex<T>
std
only.const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode + ?Sized> SizedEncode for RwLock<T>
Available on crate feature std
only.
impl<T: SizedEncode + ?Sized> SizedEncode for RwLock<T>
std
only.const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for Bound<T>
impl<T: SizedEncode> SizedEncode for Bound<T>
const MAX_ENCODED_SIZE: usize
Source§impl<T: SizedEncode> SizedEncode for Option<T>
impl<T: SizedEncode> SizedEncode for Option<T>
const MAX_ENCODED_SIZE: usize
impl<T: SizedEncode> SizedEncode for (T₁, T₂, …, Tₙ)
Implemented for tuples with up to twelve members.
Source§impl<T: SizedEncode> SizedEncode for Weak<T>
Available on crate feature alloc
only.
impl<T: SizedEncode> SizedEncode for Weak<T>
alloc
only.const MAX_ENCODED_SIZE: usize = Option<Rc<T>>::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for Weak<T>
Available on crate feature alloc
and target_has_atomic="ptr"
only.
impl<T: SizedEncode> SizedEncode for Weak<T>
alloc
and target_has_atomic="ptr"
only.const MAX_ENCODED_SIZE: usize = Option<Arc<T>>::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for LazyCell<T>
impl<T: SizedEncode> SizedEncode for LazyCell<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for UnsafeCell<T>
impl<T: SizedEncode> SizedEncode for UnsafeCell<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for Saturating<T>
impl<T: SizedEncode> SizedEncode for Saturating<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for Wrapping<T>
impl<T: SizedEncode> SizedEncode for Wrapping<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for Range<T>
impl<T: SizedEncode> SizedEncode for Range<T>
const MAX_ENCODED_SIZE: usize
Source§impl<T: SizedEncode> SizedEncode for RangeFrom<T>
impl<T: SizedEncode> SizedEncode for RangeFrom<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for RangeInclusive<T>
impl<T: SizedEncode> SizedEncode for RangeInclusive<T>
const MAX_ENCODED_SIZE: usize
Source§impl<T: SizedEncode> SizedEncode for RangeTo<T>
impl<T: SizedEncode> SizedEncode for RangeTo<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for RangeToInclusive<T>
impl<T: SizedEncode> SizedEncode for RangeToInclusive<T>
const MAX_ENCODED_SIZE: usize = T::MAX_ENCODED_SIZE
Source§impl<T: SizedEncode> SizedEncode for LazyLock<T>
Available on crate feature std
only.
impl<T: SizedEncode> SizedEncode for LazyLock<T>
std
only.