pub trait Encoder {
type Ok;
type Error: Error + Into<EncodeError> + From<EncodeError>;
Show 39 methods
// Required methods
fn codec(&self) -> Codec;
fn encode_any(
&mut self,
tag: Tag,
value: &Any,
) -> Result<Self::Ok, Self::Error>;
fn encode_bool(
&mut self,
tag: Tag,
value: bool,
) -> Result<Self::Ok, Self::Error>;
fn encode_bit_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BitStr,
) -> Result<Self::Ok, Self::Error>;
fn encode_enumerated<E: Enumerated>(
&mut self,
tag: Tag,
value: &E,
) -> Result<Self::Ok, Self::Error>;
fn encode_object_identifier(
&mut self,
tag: Tag,
value: &[u32],
) -> Result<Self::Ok, Self::Error>;
fn encode_integer(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BigInt,
) -> Result<Self::Ok, Self::Error>;
fn encode_null(&mut self, tag: Tag) -> Result<Self::Ok, Self::Error>;
fn encode_octet_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &[u8],
) -> Result<Self::Ok, Self::Error>;
fn encode_general_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &GeneralString,
) -> Result<Self::Ok, Self::Error>;
fn encode_utf8_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &str,
) -> Result<Self::Ok, Self::Error>;
fn encode_visible_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &VisibleString,
) -> Result<Self::Ok, Self::Error>;
fn encode_ia5_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &Ia5String,
) -> Result<Self::Ok, Self::Error>;
fn encode_printable_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &PrintableString,
) -> Result<Self::Ok, Self::Error>;
fn encode_numeric_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &NumericString,
) -> Result<Self::Ok, Self::Error>;
fn encode_teletex_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &TeletexString,
) -> Result<Self::Ok, Self::Error>;
fn encode_bmp_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BmpString,
) -> Result<Self::Ok, Self::Error>;
fn encode_generalized_time(
&mut self,
tag: Tag,
value: &GeneralizedTime,
) -> Result<Self::Ok, Self::Error>;
fn encode_utc_time(
&mut self,
tag: Tag,
value: &UtcTime,
) -> Result<Self::Ok, Self::Error>;
fn encode_date(
&mut self,
tag: Tag,
value: &Date,
) -> Result<Self::Ok, Self::Error>;
fn encode_explicit_prefix<V: Encode>(
&mut self,
tag: Tag,
value: &V,
) -> Result<Self::Ok, Self::Error>;
fn encode_sequence<C, F>(
&mut self,
tag: Tag,
encoder_scope: F,
) -> Result<Self::Ok, Self::Error>
where C: Constructed,
F: FnOnce(&mut Self) -> Result<(), Self::Error>;
fn encode_sequence_of<E: Encode>(
&mut self,
tag: Tag,
value: &[E],
constraints: Constraints<'_>,
) -> Result<Self::Ok, Self::Error>;
fn encode_set<C, F>(
&mut self,
tag: Tag,
value: F,
) -> Result<Self::Ok, Self::Error>
where C: Constructed,
F: FnOnce(&mut Self) -> Result<(), Self::Error>;
fn encode_set_of<E: Encode>(
&mut self,
tag: Tag,
value: &SetOf<E>,
constraints: Constraints<'_>,
) -> Result<Self::Ok, Self::Error>;
fn encode_some<E: Encode>(
&mut self,
value: &E,
) -> Result<Self::Ok, Self::Error>;
fn encode_some_with_tag_and_constraints<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E,
) -> Result<Self::Ok, Self::Error>;
fn encode_none<E: Encode>(&mut self) -> Result<Self::Ok, Self::Error>;
fn encode_none_with_tag(
&mut self,
tag: Tag,
) -> Result<Self::Ok, Self::Error>;
fn encode_choice<E: Encode + Choice>(
&mut self,
constraints: Constraints<'_>,
tag: Tag,
encode_fn: impl FnOnce(&mut Self) -> Result<Tag, Self::Error>,
) -> Result<Self::Ok, Self::Error>;
fn encode_extension_addition<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: E,
) -> Result<Self::Ok, Self::Error>;
fn encode_extension_addition_group<E>(
&mut self,
value: Option<&E>,
) -> Result<Self::Ok, Self::Error>
where E: Encode + Constructed;
// Provided methods
fn encode_or_default<E: Encode + Default + PartialEq>(
&mut self,
value: &E,
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_with_tag_or_default<E: Encode + Default + PartialEq>(
&mut self,
tag: Tag,
value: &E,
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_some_with_tag<E: Encode>(
&mut self,
tag: Tag,
value: &E,
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default<E: Encode + PartialEq>(
&mut self,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default_with_tag<E: Encode + PartialEq>(
&mut self,
tag: Tag,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default_with_tag_and_constraints<E: Encode + PartialEq>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error> { ... }
fn encode_default_with_constraints<E: Encode + PartialEq>(
&mut self,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error> { ... }
}Expand description
A data format encode any ASN.1 data type.
Required Associated Types§
type Ok
type Error: Error + Into<EncodeError> + From<EncodeError>
Required Methods§
sourcefn encode_any(&mut self, tag: Tag, value: &Any) -> Result<Self::Ok, Self::Error>
fn encode_any(&mut self, tag: Tag, value: &Any) -> Result<Self::Ok, Self::Error>
Encode an unknown ASN.1 value.
sourcefn encode_bool(
&mut self,
tag: Tag,
value: bool,
) -> Result<Self::Ok, Self::Error>
fn encode_bool( &mut self, tag: Tag, value: bool, ) -> Result<Self::Ok, Self::Error>
Encode a BOOL value.
sourcefn encode_bit_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BitStr,
) -> Result<Self::Ok, Self::Error>
fn encode_bit_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &BitStr, ) -> Result<Self::Ok, Self::Error>
Encode a BIT STRING value.
sourcefn encode_enumerated<E: Enumerated>(
&mut self,
tag: Tag,
value: &E,
) -> Result<Self::Ok, Self::Error>
fn encode_enumerated<E: Enumerated>( &mut self, tag: Tag, value: &E, ) -> Result<Self::Ok, Self::Error>
Encode a ENUMERATED value.
sourcefn encode_object_identifier(
&mut self,
tag: Tag,
value: &[u32],
) -> Result<Self::Ok, Self::Error>
fn encode_object_identifier( &mut self, tag: Tag, value: &[u32], ) -> Result<Self::Ok, Self::Error>
Encode a OBJECT IDENTIFIER value.
sourcefn encode_integer(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BigInt,
) -> Result<Self::Ok, Self::Error>
fn encode_integer( &mut self, tag: Tag, constraints: Constraints<'_>, value: &BigInt, ) -> Result<Self::Ok, Self::Error>
Encode a INTEGER value.
sourcefn encode_octet_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &[u8],
) -> Result<Self::Ok, Self::Error>
fn encode_octet_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &[u8], ) -> Result<Self::Ok, Self::Error>
Encode a OCTET STRING value.
sourcefn encode_general_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &GeneralString,
) -> Result<Self::Ok, Self::Error>
fn encode_general_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &GeneralString, ) -> Result<Self::Ok, Self::Error>
Encode a GeneralString value.
sourcefn encode_utf8_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &str,
) -> Result<Self::Ok, Self::Error>
fn encode_utf8_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &str, ) -> Result<Self::Ok, Self::Error>
Encode a Utf8String value.
sourcefn encode_visible_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &VisibleString,
) -> Result<Self::Ok, Self::Error>
fn encode_visible_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &VisibleString, ) -> Result<Self::Ok, Self::Error>
Encode a VisibleString value.
sourcefn encode_ia5_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &Ia5String,
) -> Result<Self::Ok, Self::Error>
fn encode_ia5_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &Ia5String, ) -> Result<Self::Ok, Self::Error>
Encode a Ia5String value.
sourcefn encode_printable_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &PrintableString,
) -> Result<Self::Ok, Self::Error>
fn encode_printable_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &PrintableString, ) -> Result<Self::Ok, Self::Error>
Encode a Ia5String value.
sourcefn encode_numeric_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &NumericString,
) -> Result<Self::Ok, Self::Error>
fn encode_numeric_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &NumericString, ) -> Result<Self::Ok, Self::Error>
Encode a NumericString value.
sourcefn encode_teletex_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &TeletexString,
) -> Result<Self::Ok, Self::Error>
fn encode_teletex_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &TeletexString, ) -> Result<Self::Ok, Self::Error>
Encode a TeletexString value.
sourcefn encode_bmp_string(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &BmpString,
) -> Result<Self::Ok, Self::Error>
fn encode_bmp_string( &mut self, tag: Tag, constraints: Constraints<'_>, value: &BmpString, ) -> Result<Self::Ok, Self::Error>
Encode a BmpString value.
sourcefn encode_generalized_time(
&mut self,
tag: Tag,
value: &GeneralizedTime,
) -> Result<Self::Ok, Self::Error>
fn encode_generalized_time( &mut self, tag: Tag, value: &GeneralizedTime, ) -> Result<Self::Ok, Self::Error>
Encode a GeneralizedTime value.
sourcefn encode_utc_time(
&mut self,
tag: Tag,
value: &UtcTime,
) -> Result<Self::Ok, Self::Error>
fn encode_utc_time( &mut self, tag: Tag, value: &UtcTime, ) -> Result<Self::Ok, Self::Error>
Encode a UtcTime value.
sourcefn encode_date(
&mut self,
tag: Tag,
value: &Date,
) -> Result<Self::Ok, Self::Error>
fn encode_date( &mut self, tag: Tag, value: &Date, ) -> Result<Self::Ok, Self::Error>
Encode a ‘Date’ value.
sourcefn encode_explicit_prefix<V: Encode>(
&mut self,
tag: Tag,
value: &V,
) -> Result<Self::Ok, Self::Error>
fn encode_explicit_prefix<V: Encode>( &mut self, tag: Tag, value: &V, ) -> Result<Self::Ok, Self::Error>
Encode a explicitly tagged value.
sourcefn encode_sequence<C, F>(
&mut self,
tag: Tag,
encoder_scope: F,
) -> Result<Self::Ok, Self::Error>
fn encode_sequence<C, F>( &mut self, tag: Tag, encoder_scope: F, ) -> Result<Self::Ok, Self::Error>
Encode a SEQUENCE value.
sourcefn encode_sequence_of<E: Encode>(
&mut self,
tag: Tag,
value: &[E],
constraints: Constraints<'_>,
) -> Result<Self::Ok, Self::Error>
fn encode_sequence_of<E: Encode>( &mut self, tag: Tag, value: &[E], constraints: Constraints<'_>, ) -> Result<Self::Ok, Self::Error>
Encode a SEQUENCE OF value.
sourcefn encode_set<C, F>(
&mut self,
tag: Tag,
value: F,
) -> Result<Self::Ok, Self::Error>
fn encode_set<C, F>( &mut self, tag: Tag, value: F, ) -> Result<Self::Ok, Self::Error>
Encode a SET value.
sourcefn encode_set_of<E: Encode>(
&mut self,
tag: Tag,
value: &SetOf<E>,
constraints: Constraints<'_>,
) -> Result<Self::Ok, Self::Error>
fn encode_set_of<E: Encode>( &mut self, tag: Tag, value: &SetOf<E>, constraints: Constraints<'_>, ) -> Result<Self::Ok, Self::Error>
Encode a SET OF value.
sourcefn encode_some<E: Encode>(&mut self, value: &E) -> Result<Self::Ok, Self::Error>
fn encode_some<E: Encode>(&mut self, value: &E) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_some_with_tag_and_constraints<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E,
) -> Result<Self::Ok, Self::Error>
fn encode_some_with_tag_and_constraints<E: Encode>( &mut self, tag: Tag, constraints: Constraints<'_>, value: &E, ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_none<E: Encode>(&mut self) -> Result<Self::Ok, Self::Error>
fn encode_none<E: Encode>(&mut self) -> Result<Self::Ok, Self::Error>
Encode the absent value of an optional field.
sourcefn encode_none_with_tag(&mut self, tag: Tag) -> Result<Self::Ok, Self::Error>
fn encode_none_with_tag(&mut self, tag: Tag) -> Result<Self::Ok, Self::Error>
Encode the absent value with tag of an optional field.
sourcefn encode_choice<E: Encode + Choice>(
&mut self,
constraints: Constraints<'_>,
tag: Tag,
encode_fn: impl FnOnce(&mut Self) -> Result<Tag, Self::Error>,
) -> Result<Self::Ok, Self::Error>
fn encode_choice<E: Encode + Choice>( &mut self, constraints: Constraints<'_>, tag: Tag, encode_fn: impl FnOnce(&mut Self) -> Result<Tag, Self::Error>, ) -> Result<Self::Ok, Self::Error>
Encode a CHOICE value.
sourcefn encode_extension_addition<E: Encode>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: E,
) -> Result<Self::Ok, Self::Error>
fn encode_extension_addition<E: Encode>( &mut self, tag: Tag, constraints: Constraints<'_>, value: E, ) -> Result<Self::Ok, Self::Error>
Encode a extension addition value.
sourcefn encode_extension_addition_group<E>(
&mut self,
value: Option<&E>,
) -> Result<Self::Ok, Self::Error>where
E: Encode + Constructed,
fn encode_extension_addition_group<E>(
&mut self,
value: Option<&E>,
) -> Result<Self::Ok, Self::Error>where
E: Encode + Constructed,
Encode a extension addition group value.
Provided Methods§
sourcefn encode_or_default<E: Encode + Default + PartialEq>(
&mut self,
value: &E,
) -> Result<Self::Ok, Self::Error>
fn encode_or_default<E: Encode + Default + PartialEq>( &mut self, value: &E, ) -> Result<Self::Ok, Self::Error>
Encode the value a field or skip if it matches the default..
sourcefn encode_with_tag_or_default<E: Encode + Default + PartialEq>(
&mut self,
tag: Tag,
value: &E,
) -> Result<Self::Ok, Self::Error>
fn encode_with_tag_or_default<E: Encode + Default + PartialEq>( &mut self, tag: Tag, value: &E, ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_some_with_tag<E: Encode>(
&mut self,
tag: Tag,
value: &E,
) -> Result<Self::Ok, Self::Error>
fn encode_some_with_tag<E: Encode>( &mut self, tag: Tag, value: &E, ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default<E: Encode + PartialEq>(
&mut self,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error>
fn encode_default<E: Encode + PartialEq>( &mut self, value: &E, default: impl FnOnce() -> E, ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default_with_tag<E: Encode + PartialEq>(
&mut self,
tag: Tag,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error>
fn encode_default_with_tag<E: Encode + PartialEq>( &mut self, tag: Tag, value: &E, default: impl FnOnce() -> E, ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default_with_tag_and_constraints<E: Encode + PartialEq>(
&mut self,
tag: Tag,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error>
fn encode_default_with_tag_and_constraints<E: Encode + PartialEq>( &mut self, tag: Tag, constraints: Constraints<'_>, value: &E, default: impl FnOnce() -> E, ) -> Result<Self::Ok, Self::Error>
Encode the present value of an optional field.
sourcefn encode_default_with_constraints<E: Encode + PartialEq>(
&mut self,
constraints: Constraints<'_>,
value: &E,
default: impl FnOnce() -> E,
) -> Result<Self::Ok, Self::Error>
fn encode_default_with_constraints<E: Encode + PartialEq>( &mut self, constraints: Constraints<'_>, value: &E, default: impl FnOnce() -> E, ) -> Result<Self::Ok, Self::Error>
Encode the present constrained value of an optional field.