Enum bsn1::Length[][src]

pub enum Length {
    Indefinite,
    Definite(usize),
}

Length represents ASN.1 length.

Note that Length represents the byte count of the contents in ASN.1. The total byte size of BER, DER, and CER is greater than that. (BER, DER, and CER are constituted of identifier, length, and contents.)

Variants

Indefinite

Represents ‘Indefinite’ length.

‘Indefinite’ is only for ‘BER’, and the contents must end with ‘EOC’ octets.

Definite(usize)

‘Definite’ is for ‘BER’, ‘DER’, and ‘CER’, and represents the byte count of the contents.

Implementations

impl Length[src]

pub fn to_bytes(&self) -> impl AsRef<[u8]>[src]

Serializes length .

This function won’t allocate heap memory.

Examples

use bsn1::Length;
use core::convert::TryFrom;

let length = Length::Definite(3);
let bytes = length.to_bytes();

let deserialized = Length::try_from(bytes.as_ref()).unwrap();
assert_eq!(length, deserialized);

Trait Implementations

impl Clone for Length[src]

impl Copy for Length[src]

impl Debug for Length[src]

impl Eq for Length[src]

impl Hash for Length[src]

impl PartialEq<Length> for Length[src]

impl StructuralEq for Length[src]

impl StructuralPartialEq for Length[src]

impl TryFrom<&'_ [u8]> for Length[src]

type Error = Error

The type returned in the event of a conversion error.

fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>[src]

Parses bytes starting with length octets and returns a Length .

This function ignores extra octet(s) at the end of bytes if any.

Auto Trait Implementations

impl RefUnwindSafe for Length

impl Send for Length

impl Sync for Length

impl Unpin for Length

impl UnwindSafe for Length

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.