BenEncoder

Struct BenEncoder 

Source
pub struct BenEncoder<W: Write> { /* private fields */ }
Expand description

A struct to make the writing of BEN files easier and more ergonomic.

§Example

use ben::{encode::BenEncoder, BenVariant};

let mut buffer = Vec::new();
let mut ben_encoder = BenEncoder::new(&mut buffer, BenVariant::Standard);

ben_encoder.write_assignment(vec![1, 1, 1, 2, 2, 2]);

Implementations§

Source§

impl<W: Write> BenEncoder<W>

Source

pub fn new(writer: W, variant: BenVariant) -> Self

Create a new BenEncoder instance and handles the BEN file header.

§Arguments
  • writer - A writer to write the BEN file to
  • variant - The BEN variant to use (Standard or MkvChain)
§Returns

A new BenEncoder instance

Source

pub fn write_rle(&mut self, rle_vec: Vec<(u16, u16)>) -> Result<()>

Write a run-length encoded assignment vector to the BEN file.

§Arguments
  • rle_vec - A run-length encoded assignment vector to write
§Returns

A Result type that contains the result of the operation

Source

pub fn write_assignment(&mut self, assign_vec: Vec<u16>) -> Result<()>

Write an assignment vector to the BEN file.

§Arguments
  • assign_vec - An assignment vector to write
§Returns

A Result type that contains the result of the operation

Source

pub fn write_json_value(&mut self, data: Value) -> Result<()>

Write a JSON value containing an assignment vector to the BEN file.

§Arguments
  • data - A JSON value containing an assignment vector
§Returns

A Result type that contains the result of the operation

Source

pub fn finish(&mut self) -> Result<()>

Cleanup function to make sure the last sample is written to the BEN file if using the MkvChain variant.

This function is automatically called when the BenEncoder goes out of scope, but can be called manually if desired.

§Returns

A Result type that contains the result of the operation

§Errors

This function will return an error if the writer encounters an error while writing the last sample to the BEN file.

Trait Implementations§

Source§

impl<W: Write> Drop for BenEncoder<W>

Source§

fn drop(&mut self)

Make sure to finish writing the BEN file when the BenEncoder goes out of scope.

Auto Trait Implementations§

§

impl<W> Freeze for BenEncoder<W>
where W: Freeze,

§

impl<W> RefUnwindSafe for BenEncoder<W>
where W: RefUnwindSafe,

§

impl<W> Send for BenEncoder<W>
where W: Send,

§

impl<W> Sync for BenEncoder<W>
where W: Sync,

§

impl<W> Unpin for BenEncoder<W>
where W: Unpin,

§

impl<W> UnwindSafe for BenEncoder<W>
where W: UnwindSafe,

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.