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

pub struct LumpData(_);

Lumpのデータ.

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

Methods

impl LumpData
[src]

MAX_SIZE: usize = 65535 * <BlockSize>::MIN as usize - 2

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

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

蛇足

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

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

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

MAX_EMBEDDED_SIZE: usize = 65535

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

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

性能上の注意

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

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

Errors

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

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

Errors

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

Important traits for &'a [u8]

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

Important traits for &'a [u8]

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

Important traits for Vec<u8>

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

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

Trait Implementations

impl Clone for LumpData
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

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

Important traits for &'a [u8]

Performs the conversion.

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

Important traits for &'a [u8]

Performs the conversion.

impl Debug for LumpData
[src]

Formats the value using the given formatter. Read more

impl PartialEq for LumpData
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for LumpData
[src]

Auto Trait Implementations

impl Send for LumpData

impl Sync for LumpData