Skip to content

Commit 57fdf0a

Browse files
authored
der: docs: add Encode trait example (#2071)
1 parent 6f3f780 commit 57fdf0a

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

der/src/encode.rs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,32 @@ use crate::{FixedTag, Tag};
2121

2222
/// Encode trait produces a complete TLV (Tag-Length-Value) structure.
2323
///
24-
/// As opposed to [`EncodeValue`], implementer is expected to write ASN.1 DER tag and length header before value.
24+
/// As opposed to [`EncodeValue`], implementer is expected to write whole ASN.1 DER header, before writing value.
25+
///
26+
/// ## Example
27+
///
28+
/// ```
29+
/// # #[cfg(all(feature = "alloc", feature = "std"))]
30+
/// # {
31+
/// use der::{Any, Encode, Length, Reader, Writer};
32+
///
33+
/// /// Wrapper around Any, with custom foreign trait support.
34+
/// ///
35+
/// /// For example: serde Serialize/Deserialize
36+
/// pub struct AnySerde(pub Any);
37+
///
38+
/// impl Encode for AnySerde {
39+
///
40+
/// fn encoded_len(&self) -> der::Result<Length> {
41+
/// self.0.encoded_len()
42+
/// }
43+
///
44+
/// fn encode(&self, encoder: &mut impl Writer) -> der::Result<()> {
45+
/// self.0.encode(encoder)
46+
/// }
47+
/// }
48+
/// # }
49+
/// ```
2550
#[diagnostic::on_unimplemented(
2651
note = "Consider adding impls of `EncodeValue` and `FixedTag` to `{Self}`"
2752
)]

0 commit comments

Comments
 (0)