[][src]Struct cannyls::lump::LumpData

pub struct LumpData(_);

Lumpのデータ.

最大でMAX_SIZEまでのバイト列を保持可能.

Methods

impl LumpData[src]

pub const MAX_SIZE: usize[src]

データの最大長(バイト単位).

最小ブロックサイズを用いた場合に表現可能な最大サイズまでのデータが保持可能. 最後の-2は、内部的に付与されるメタ情報のサイズ分.

蛇足

現状は簡単のために、最小のブロックサイズに合わせた最大サイズ、となっている。

ただし、仕組み上は、ストレージが採用したブロックサイズがそれよりも大きい場合には、 保存可能なデータサイズを比例して大きくすることは可能.

一つ一つのlumpのサイズをあまり巨大にしてしまうと、 一つのlumpの読み書き処理が全体のレイテンシを阻害してしまう可能性もあるので、 現状くらいの制限でちょうど良いのではないかとも思うが、 もし最大サイズをどうしても上げたい場合には、それも不可能ではない、 ということは記しておく.

pub const MAX_EMBEDDED_SIZE: usize[src]

ジャーナル領域に埋め込み可能なデータの最大長(バイト単位).

pub fn new(data: Vec<u8>) -> Result<Self>[src]

引数で指定されたデータを保持するLumpDataインスタンスを生成する.

性能上の注意

この関数で生成されたLumpDataインスタンスは、保存先ストレージのブロック境界に合わせた アライメントが行われていないため、PUTによる保存時に必ず一度、 アライメント用にデータサイズ分のメモリコピーが発生してしまう.

保存時のコピーを避けたい場合にはStorageないしDeviceHandleが提供している allocate_lump_data_with_bytesメソッドを使用して、 アライメント済みのLumpDataインスタンスを生成すると良い.

Errors

データのサイズがMAX_SIZEを超えている場合は、ErrorKind::InvalidInputエラーが返される.

pub fn new_embedded(data: Vec<u8>) -> Result<Self>[src]

ジャーナル領域埋め込み用のLumpDataインスタンスを生成する.

Errors

dataの長さがMAX_EMBEDDED_SIZEを超えている場合は、ErrorKind::InvalidInputエラーが返される.

pub fn as_bytes(&self) -> &[u8][src]

データを表すバイト列への参照を返す.

pub fn as_bytes_mut(&mut self) -> &mut [u8][src]

データを表すバイト列への破壊的な参照を返す.

pub fn into_bytes(self) -> Vec<u8>[src]

所有権を放棄して、内部のバイト列を返す.

なお、このインスタンスが確保しているのがアライメントされたメモリ領域の場合には、 それを通常のVec<u8>に変換するためのメモリコピーが、本メソッド呼び出し時に発生することになる.

Trait Implementations

impl AsMut<[u8]> for LumpData[src]

impl AsRef<[u8]> for LumpData[src]

impl Clone for LumpData[src]

impl Debug for LumpData[src]

impl Eq for LumpData[src]

impl PartialEq<LumpData> for LumpData[src]

Auto Trait Implementations

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> SendSyncUnwindSafe for T where
    T: Send + Sync + UnwindSafe + ?Sized
[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.