pub trait EncodeValue {
// Required methods
fn value_len(&self) -> Result<Length>;
fn encode_value(&self, writer: &mut impl Writer) -> Result<()>;
// Provided method
fn header(&self) -> Result<Header>
where Self: Tagged { ... }
}Expand description
Encode the value part of a Tag-Length-Value encoded field, sans the Tag
and Length.
As opposed to Encode, implementer is expected to write the inner content only,
without the Header.
When EncodeValue is paired with FixedTag,
it produces a complete TLV ASN.1 DER encoding as Encode trait.
§Example
use der::{Encode, EncodeValue, ErrorKind, FixedTag, Length, Tag, Writer};
/// 1-byte month
struct MyByteMonth(u8);
impl EncodeValue for MyByteMonth {
fn value_len(&self) -> der::Result<Length> {
Ok(Length::new(1))
}
fn encode_value(&self, writer: &mut impl Writer) -> der::Result<()> {
writer.write_byte(self.0)?;
Ok(())
}
}
impl FixedTag for MyByteMonth {
const TAG: Tag = Tag::OctetString;
}
let month = MyByteMonth(9);
let mut buf = [0u8; 16];
let month_der = month.encode_to_slice(&mut buf).expect("month to encode");
assert_eq!(month_der, b"\x04\x01\x09");Required Methods§
Provided Methods§
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 EncodeValue for bool
impl EncodeValue for bool
Source§impl EncodeValue for f64
Available on crate feature real only.
impl EncodeValue for f64
Available on crate feature
real only.Source§impl EncodeValue for i8
impl EncodeValue for i8
Source§impl EncodeValue for i16
impl EncodeValue for i16
Source§impl EncodeValue for i32
impl EncodeValue for i32
Source§impl EncodeValue for i64
impl EncodeValue for i64
Source§impl EncodeValue for i128
impl EncodeValue for i128
Source§impl EncodeValue for str
impl EncodeValue for str
Source§impl EncodeValue for u8
impl EncodeValue for u8
Source§impl EncodeValue for u16
impl EncodeValue for u16
Source§impl EncodeValue for u32
impl EncodeValue for u32
Source§impl EncodeValue for u64
impl EncodeValue for u64
Source§impl EncodeValue for u128
impl EncodeValue for u128
Source§impl EncodeValue for ()
impl EncodeValue for ()
Source§impl EncodeValue for String
Available on crate feature alloc only.
impl EncodeValue for String
Available on crate feature
alloc only.Source§impl EncodeValue for SystemTime
Available on crate feature std only.
impl EncodeValue for SystemTime
Available on crate feature
std only.Source§impl EncodeValue for Bytes
Available on crate feature bytes only.
impl EncodeValue for Bytes
Available on crate feature
bytes only.Source§impl EncodeValue for PrimitiveDateTime
Available on crate feature time only.
impl EncodeValue for PrimitiveDateTime
Available on crate feature
time only.Source§impl<T> EncodeValue for Cow<'_, T>
Available on crate feature alloc only.
impl<T> EncodeValue for Cow<'_, T>
Available on crate feature
alloc only.Source§impl<T> EncodeValue for Box<T>where
T: EncodeValue,
Available on crate feature alloc only.
impl<T> EncodeValue for Box<T>where
T: EncodeValue,
Available on crate feature
alloc only.Source§impl<T> EncodeValue for Vec<T>where
T: Encode,
Available on crate feature alloc only.
impl<T> EncodeValue for Vec<T>where
T: Encode,
Available on crate feature
alloc only.Source§impl<T: Encode> EncodeValue for [T]
impl<T: Encode> EncodeValue for [T]
Source§impl<T: Flags> EncodeValue for FlagSet<T>
Available on crate feature flagset only.
impl<T: Flags> EncodeValue for FlagSet<T>
Available on crate feature
flagset only.Implementors§
impl EncodeValue for &OctetStringRef
impl EncodeValue for Any
Available on crate feature
alloc only.impl EncodeValue for AnyRef<'_>
impl EncodeValue for BitString
Available on crate feature
alloc only.impl EncodeValue for BitStringRef<'_>
impl EncodeValue for BmpString
Available on crate feature
alloc only.impl EncodeValue for GeneralStringRef<'_>
impl EncodeValue for GeneralizedTime
impl EncodeValue for Ia5String
Available on crate feature
alloc only.impl EncodeValue for Int
Available on crate feature
alloc only.impl EncodeValue for IntRef<'_>
impl EncodeValue for Null
impl EncodeValue for OctetString
Available on crate feature
alloc only.impl EncodeValue for PrintableString
Available on crate feature
alloc only.impl EncodeValue for SequenceRef
impl EncodeValue for TeletexString
Available on crate feature
alloc only.impl EncodeValue for Uint
Available on crate feature
alloc only.impl EncodeValue for UintRef<'_>
impl EncodeValue for UtcTime
impl EncodeValue for DateTime
impl<'a> EncodeValue for Ia5StringRef<'a>
impl<'a> EncodeValue for PrintableStringRef<'a>
impl<'a> EncodeValue for TeletexStringRef<'a>
impl<'a> EncodeValue for Utf8StringRef<'a>
impl<'a> EncodeValue for VideotexStringRef<'a>
impl<T> EncodeValue for Application<T>where
T: EncodeValue + Tagged,
impl<T> EncodeValue for ApplicationRef<'_, T>where
T: EncodeValue + Tagged,
impl<T> EncodeValue for ContextSpecific<T>where
T: EncodeValue + Tagged,
impl<T> EncodeValue for ContextSpecificRef<'_, T>where
T: EncodeValue + Tagged,
impl<T> EncodeValue for Private<T>where
T: EncodeValue + Tagged,
impl<T> EncodeValue for PrivateRef<'_, T>where
T: EncodeValue + Tagged,
impl<T> EncodeValue for SetOfVec<T>
Available on (crate features
alloc or heapless) and crate feature alloc only.impl<T> EncodeValue for EncodeValueRef<'_, T>where
T: EncodeValue,
impl<T, const N: usize> EncodeValue for SequenceOf<T, N>where
T: Encode,
Available on crate feature
heapless only.impl<T, const N: usize> EncodeValue for SetOf<T, N>
Available on (crate features
alloc or heapless) and crate feature heapless only.impl<const MAX_SIZE: usize> EncodeValue for ObjectIdentifier<MAX_SIZE>
Available on crate feature
oid only.