use ;
/// User-provided raw DER wrapper.
///
/// Allow user to provide raw DER: no tag is added by serializer and bytes are bumped as it.
/// Note that provided DER header has to be valid to determine length on deserialization.
///
/// # Example
/// ```
/// use picky_asn1_der::Asn1RawDer;
/// use serde::{Serialize, Deserialize};
///
/// #[derive(Serialize, Deserialize, PartialEq, Debug)]
/// struct A {
/// number: u8,
/// user_provided: Asn1RawDer,
/// }
///
/// let plain_a = A {
/// number: 7,
/// user_provided: Asn1RawDer(vec![
/// 0x30, 0x08,
/// 0x0C, 0x03, 0x41, 0x62, 0x63,
/// 0x02, 0x01, 0x05,
/// ]),
/// };
///
/// let serialized_a = picky_asn1_der::to_vec(&plain_a).expect("A to vec");
/// assert_eq!(
/// serialized_a,
/// [
/// 0x30, 0x0D,
/// 0x02, 0x01, 0x07,
/// 0x30, 0x08,
/// 0x0C, 0x03, 0x41, 0x62, 0x63,
/// 0x02, 0x01, 0x05,
/// ]
/// );
///
/// let deserialized_a = picky_asn1_der::from_bytes(&serialized_a).expect("A from bytes");
/// assert_eq!(plain_a, deserialized_a);
///
/// // we can deserialize into a compatible B structure.
///
/// #[derive(Deserialize, Debug, PartialEq)]
/// struct B {
/// number: u8,
/// tuple: (String, u8),
/// }
///
/// let plain_b = B { number: 7, tuple: ("Abc".to_owned(), 5) };
/// let deserialized_b: B = picky_asn1_der::from_bytes(&serialized_a).expect("B from bytes");
/// assert_eq!(deserialized_b, plain_b);
/// ```
] pub );