Padding

Struct Padding 

Source
pub struct Padding {
    pub size: BlockSize,
}
Expand description

A PADDING metadata block

Padding blocks are empty blocks consisting of all 0 bytes. If one wishes to edit the metadata in other blocks, adjusting the size of the padding block allows us to do so without have to rewrite the entire FLAC file. For example, when adding 10 bytes to a comment, we can subtract 10 bytes from the padding and the total size of all blocks remains unchanged. Therefore we can simply overwrite the old comment block with the new without affecting the following FLAC audio frames.

This block may occur multiple times in a FLAC file.

§Example

use bitstream_io::{BitReader, BitRead, BigEndian};
use flac_codec::metadata::{BlockHeader, BlockType, Padding};

let data: &[u8] = &[
    0x81, 0x00, 0x00, 0x0a,  // block header
    // padding bytes
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
];

let mut r = BitReader::endian(data, BigEndian);
let header = r.parse::<BlockHeader>().unwrap();
assert_eq!(
    &header,
    &BlockHeader {
        last: true,
        block_type: BlockType::Padding,
        size: 0x0au8.into(),
    },
);

assert_eq!(
    r.parse_using::<Padding>(header.size).unwrap(),
    Padding {
        size: 0x0au8.into(),
    },
);

Fields§

§size: BlockSize

The size of the padding, in bytes

Trait Implementations§

Source§

impl AsBlockRef for Padding

Source§

fn as_block_ref(&self) -> BlockRef<'_>

Returns fresh reference to ourself.
Source§

impl Clone for Padding

Source§

fn clone(&self) -> Padding

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Padding

Source§

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

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

impl Default for Padding

Source§

fn default() -> Padding

Returns the “default value” for a type. Read more
Source§

impl From<Padding> for Block

Source§

fn from(b: Padding) -> Self

Converts to this type from the input type.
Source§

impl FromBitStreamUsing for Padding

Source§

type Context = BlockSize

Some context to consume when parsing
Source§

type Error = Error

Error generated during parsing, such as io::Error
Source§

fn from_reader<R: BitRead + ?Sized>( r: &mut R, size: BlockSize, ) -> Result<Self, Self::Error>

Parse Self from reader with the given context
Source§

impl MetadataBlock for Padding

Source§

const TYPE: BlockType = BlockType::Padding

The metadata block’s type
Source§

const MULTIPLE: bool = true

Whether the block can occur multiple times in a file
Source§

fn bytes(&self) -> Option<BlockSize>

Size of block, in bytes, not including header
Source§

fn total_size(&self) -> Option<BlockSize>

Size of block, in bytes, including block header
Source§

impl OptionalMetadataBlock for Padding

Source§

const OPTIONAL_TYPE: OptionalBlockType = OptionalBlockType::Padding

Our optional block type
Source§

impl PartialEq for Padding

Source§

fn eq(&self, other: &Padding) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl ToBitStream for Padding

Source§

type Error = Error

Error generated during building, such as io::Error
Source§

fn to_writer<W: BitWrite + ?Sized>(&self, w: &mut W) -> Result<(), Self::Error>

Generate self to writer
Source§

fn bits<C>(&self) -> Result<C, Self::Error>
where C: Counter, Self: Sized,

Returns length of self in bits, if possible
Source§

fn bits_len<C, E>(&self) -> Result<C, Self::Error>
where C: Counter, E: Endianness, Self: Sized,

👎Deprecated since 4.0.0: use of bits() is preferred
Returns total length of self, if possible
Source§

impl TryFrom<Block> for Padding

Source§

type Error = ()

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

fn try_from(block: Block) -> Result<Self, ()>

Performs the conversion.
Source§

impl Eq for Padding

Source§

impl PortableMetadataBlock for Padding

Source§

impl StructuralPartialEq for Padding

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.