SliceWriter

Struct SliceWriter 

Source
pub struct SliceWriter<'a> { /* private fields */ }
Expand description

Writer which encodes DER into a mutable output byte slice.

Implementations§

Source§

impl<'a> SliceWriter<'a>

Source

pub fn new(bytes: &'a mut [u8]) -> Self

Create a new encoder with the given byte slice as a backing buffer.

Source

pub fn encode<T: Encode>(&mut self, encodable: &T) -> Result<()>

Encode a value which impls the Encode trait.

Source

pub fn error<T>(&mut self, kind: ErrorKind) -> Result<T>

Return an error with the given ErrorKind, annotating it with context about where the error occurred.

Source

pub fn is_failed(&self) -> bool

Did the decoding operation fail due to an error?

Source

pub fn finish(self) -> Result<&'a [u8]>

Finish encoding to the buffer, returning a slice containing the data written to the buffer.

Source

pub fn context_specific<T>( &mut self, tag_number: TagNumber, tag_mode: TagMode, value: &T, ) -> Result<()>
where T: EncodeValue + Tagged,

Encode a CONTEXT-SPECIFIC field with the provided tag number and mode.

Source

pub fn sequence<F>(&mut self, length: Length, f: F) -> Result<()>
where F: FnOnce(&mut SliceWriter<'_>) -> Result<()>,

Encode an ASN.1 SEQUENCE of the given length.

Spawns a nested slice writer which is expected to be exactly the specified length upon completion.

Trait Implementations§

Source§

impl<'a> Debug for SliceWriter<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Writer for SliceWriter<'a>

Source§

fn write(&mut self, slice: &[u8]) -> Result<()>

Write the given DER-encoded bytes as output.
Source§

fn write_byte(&mut self, byte: u8) -> Result<()>

Write a single byte.

Auto Trait Implementations§

§

impl<'a> Freeze for SliceWriter<'a>

§

impl<'a> RefUnwindSafe for SliceWriter<'a>

§

impl<'a> Send for SliceWriter<'a>

§

impl<'a> Sync for SliceWriter<'a>

§

impl<'a> Unpin for SliceWriter<'a>

§

impl<'a> !UnwindSafe for SliceWriter<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 24 bytes