pub trait Encoder {
type Ok;
type Error: Error + Into<EncodeError> + From<EncodeError>;
Show 38 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_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_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.
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.