pub struct ByteBlock(pub Vec<u8>);
Expand description
Datablock
that consists of a list of bytes.
It is possible to store any block of data in a ByteBlock
,
but that would require to know the Endianness
of the file
beforehand, so the bytes are written in the correct order.
Using a Datablock
, on the other hand, allows to make use
of the functionality of an EndianFile
, so the data can be
written without worrying about the endianness.
§Examples
Creating a ByteBlock from a Vec<u8>
:
use tiff_encoder::prelude::*;
// A vector holding arbitrary u8 data.
// This is the data we want to store as a Byteblock.
let data_8bits: Vec<u8> = vec![0; 65536];
// Create an Offsets of a single Byteblock from the buffer.
// This is the value that can be used directly as an IFD entry value.
let byte_block = ByteBlock::single(data_8bits);
Creating a ByteBlock from a Vec<u32>
:
extern crate byteorder;
// Crate byteorder will be used to write 32-bit information in a 8-bit buffer.
use byteorder::{LittleEndian, WriteBytesExt};
use tiff_encoder::prelude::*;
// A vector holding arbitrary u32 data.
// This is the data we want to store as a Byteblock.
let data_32bits: Vec<u32> = vec![0; 65536];
// First, let's store the data in a u8 buffer.
let mut image_bytes = Vec::with_capacity(262144); // 65536*4 (each u32 has a size of 4 bytes)
for val in data_32bits {
// A little endian TIFF file is assumed in this example.
image_bytes.write_u32::<LittleEndian>(val).unwrap();
}
// Create an Offsets of a single Byteblock from the buffer.
// This is the value that can be used directly as an IFD entry value.
let byte_block = ByteBlock::single(image_bytes);
Tuple Fields§
§0: Vec<u8>
Implementations§
Trait Implementations§
Source§impl Datablock for ByteBlock
impl Datablock for ByteBlock
Source§fn write_to(self, file: &mut EndianFile) -> Result<()>
fn write_to(self, file: &mut EndianFile) -> Result<()>
Writes this
Datablock
to an EndianFile
. The number of bytes
written must be exactly same number as returned by size(&self)
. Read moreAuto Trait Implementations§
impl Freeze for ByteBlock
impl RefUnwindSafe for ByteBlock
impl Send for ByteBlock
impl Sync for ByteBlock
impl Unpin for ByteBlock
impl UnwindSafe for ByteBlock
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more