Struct der::asn1::ContextSpecific
source · [−]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
sourceimpl<T> ContextSpecific<T>
impl<T> ContextSpecific<T>
sourcepub fn decode_explicit<'a>(
decoder: &mut Decoder<'a>,
tag_number: TagNumber
) -> Result<Option<Self>> where
T: Decodable<'a>,
pub fn decode_explicit<'a>(
decoder: &mut Decoder<'a>,
tag_number: TagNumber
) -> Result<Option<Self>> where
T: Decodable<'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>(
decoder: &mut Decoder<'a>,
tag_number: TagNumber
) -> Result<Option<Self>> where
T: DecodeValue<'a> + Tagged,
pub fn decode_implicit<'a>(
decoder: &mut Decoder<'a>,
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.
sourcepub fn to_ref(&self) -> ContextSpecificRef<'_, T>
pub fn to_ref(&self) -> ContextSpecificRef<'_, T>
Get a ContextSpecificRef for this field.
Trait Implementations
sourceimpl<'a, T> Choice<'a> for ContextSpecific<T> where
T: Decodable<'a> + Tagged,
impl<'a, T> Choice<'a> for ContextSpecific<T> where
T: Decodable<'a> + Tagged,
sourcefn can_decode(tag: Tag) -> bool
fn can_decode(tag: Tag) -> bool
Is the provided Tag decodable as a variant of this CHOICE?
sourceimpl<T: Clone> Clone for ContextSpecific<T>
impl<T: Clone> Clone for ContextSpecific<T>
sourcefn clone(&self) -> ContextSpecific<T>
fn clone(&self) -> ContextSpecific<T>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl<T: Debug> Debug for ContextSpecific<T>
impl<T: Debug> Debug for ContextSpecific<T>
sourceimpl<'a, T> Decodable<'a> for ContextSpecific<T> where
T: Decodable<'a>,
impl<'a, T> Decodable<'a> for ContextSpecific<T> where
T: Decodable<'a>,
sourceimpl<T> EncodeValue for ContextSpecific<T> where
T: EncodeValue + Tagged,
impl<T> EncodeValue for ContextSpecific<T> where
T: EncodeValue + Tagged,
sourceimpl<T: Ord> Ord for ContextSpecific<T>
impl<T: Ord> Ord for ContextSpecific<T>
sourceimpl<T: PartialEq> PartialEq<ContextSpecific<T>> for ContextSpecific<T>
impl<T: PartialEq> PartialEq<ContextSpecific<T>> for ContextSpecific<T>
sourcefn eq(&self, other: &ContextSpecific<T>) -> bool
fn eq(&self, other: &ContextSpecific<T>) -> bool
This method tests for self and other values to be equal, and is used
by ==. Read more
sourcefn ne(&self, other: &ContextSpecific<T>) -> bool
fn ne(&self, other: &ContextSpecific<T>) -> bool
This method tests for !=.
sourceimpl<T: PartialOrd> PartialOrd<ContextSpecific<T>> for ContextSpecific<T>
impl<T: PartialOrd> PartialOrd<ContextSpecific<T>> for ContextSpecific<T>
sourcefn partial_cmp(&self, other: &ContextSpecific<T>) -> Option<Ordering>
fn partial_cmp(&self, other: &ContextSpecific<T>) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
sourceimpl<T> Tagged for ContextSpecific<T> where
T: Tagged,
impl<T> Tagged for ContextSpecific<T> where
T: Tagged,
sourceimpl<'a, T> TryFrom<Any<'a>> for ContextSpecific<T> where
T: Decodable<'a>,
impl<'a, T> TryFrom<Any<'a>> for ContextSpecific<T> where
T: Decodable<'a>,
sourceimpl<T> ValueOrd for ContextSpecific<T> where
T: EncodeValue + ValueOrd + Tagged,
impl<T> ValueOrd for ContextSpecific<T> where
T: EncodeValue + ValueOrd + Tagged,
impl<T: Copy> Copy for ContextSpecific<T>
impl<T: Eq> Eq for ContextSpecific<T>
impl<T> StructuralEq for ContextSpecific<T>
impl<T> StructuralPartialEq for ContextSpecific<T>
Auto Trait Implementations
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more