pub struct ContextSpecific<T> {
pub tag_number: TagNumber,
pub tag_mode: TagMode,
pub value: T,
}Expand description
Context-specific field which wraps an owned inner value.
This type decodes/encodes a field which is specific to a particular context
and is identified by a TagNumber.
Fields§
§tag_number: TagNumberContext-specific tag number sans the leading 0b10000000 class
identifier bit and 0b100000 constructed flag.
tag_mode: TagModeTag mode: EXPLICIT VS IMPLICIT.
value: TValue of the field.
Implementations§
Source§impl<T> ContextSpecific<T>
impl<T> ContextSpecific<T>
Sourcepub fn decode_explicit<'a, R: Reader<'a>>(
reader: &mut R,
tag_number: TagNumber,
) -> Result<Option<Self>>where
T: Decode<'a>,
pub fn decode_explicit<'a, R: Reader<'a>>(
reader: &mut R,
tag_number: TagNumber,
) -> Result<Option<Self>>where
T: Decode<'a>,
Attempt to decode an EXPLICIT ASN.1 CONTEXT-SPECIFIC field with the
provided TagNumber.
This method has the following behavior which is designed to simplify
handling of extension fields, which are denoted in an ASN.1 schema
using the ... ellipsis extension marker:
- Skips over
ContextSpecificfields with a tag number lower than the current one, consuming and ignoring them. - Returns
Ok(None)if aContextSpecificfield with a higher tag number is encountered. These fields are not consumed in this case, allowing a field with a lower tag number to be omitted, then the higher numbered field consumed as a follow-up. - Returns
Ok(None)if anything other than aContextSpecificfield is encountered.
Sourcepub fn decode_implicit<'a, R: Reader<'a>>(
reader: &mut R,
tag_number: TagNumber,
) -> Result<Option<Self>>where
T: DecodeValue<'a> + Tagged,
pub fn decode_implicit<'a, R: Reader<'a>>(
reader: &mut R,
tag_number: TagNumber,
) -> Result<Option<Self>>where
T: DecodeValue<'a> + Tagged,
Attempt to decode an IMPLICIT ASN.1 CONTEXT-SPECIFIC field with the
provided TagNumber.
This method otherwise behaves the same as decode_explicit,
but should be used in cases where the particular fields are IMPLICIT
as opposed to EXPLICIT.
Trait Implementations§
Source§impl<'a, T> Choice<'a> for ContextSpecific<T>
impl<'a, T> Choice<'a> for ContextSpecific<T>
Source§impl<T: Clone> Clone for ContextSpecific<T>
impl<T: Clone> Clone for ContextSpecific<T>
Source§fn clone(&self) -> ContextSpecific<T>
fn clone(&self) -> ContextSpecific<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<T: Debug> Debug for ContextSpecific<T>
impl<T: Debug> Debug for ContextSpecific<T>
Source§impl<'a, T> Decode<'a> for ContextSpecific<T>where
T: Decode<'a>,
impl<'a, T> Decode<'a> for ContextSpecific<T>where
T: Decode<'a>,
Source§impl<T> EncodeValue for ContextSpecific<T>where
T: EncodeValue + Tagged,
impl<T> EncodeValue for ContextSpecific<T>where
T: EncodeValue + Tagged,
Source§impl<T: Ord> Ord for ContextSpecific<T>
impl<T: Ord> Ord for ContextSpecific<T>
Source§fn cmp(&self, other: &ContextSpecific<T>) -> Ordering
fn cmp(&self, other: &ContextSpecific<T>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<T: PartialEq> PartialEq for ContextSpecific<T>
impl<T: PartialEq> PartialEq for ContextSpecific<T>
Source§impl<T: PartialOrd> PartialOrd for ContextSpecific<T>
impl<T: PartialOrd> PartialOrd for ContextSpecific<T>
Source§impl<T> Tagged for ContextSpecific<T>where
T: Tagged,
impl<T> Tagged for ContextSpecific<T>where
T: Tagged,
Source§impl<T> ValueOrd for ContextSpecific<T>
impl<T> ValueOrd for ContextSpecific<T>
impl<T: Copy> Copy for ContextSpecific<T>
impl<T: Eq> Eq for ContextSpecific<T>
impl<T> StructuralPartialEq for ContextSpecific<T>
Auto Trait Implementations§
impl<T> Freeze for ContextSpecific<T>where
T: Freeze,
impl<T> RefUnwindSafe for ContextSpecific<T>where
T: RefUnwindSafe,
impl<T> Send for ContextSpecific<T>where
T: Send,
impl<T> Sync for ContextSpecific<T>where
T: Sync,
impl<T> Unpin for ContextSpecific<T>where
T: Unpin,
impl<T> UnwindSafe for ContextSpecific<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Encode for Twhere
T: EncodeValue + Tagged,
impl<T> Encode for Twhere
T: EncodeValue + Tagged,
Source§fn encoded_len(&self) -> Result<Length, Error>
fn encoded_len(&self) -> Result<Length, Error>
Compute the length of this value in bytes when encoded as ASN.1 DER.
Source§fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
Encode this value as ASN.1 DER using the provided Writer.