Trait BaseBox

Source
pub trait BaseBox {
    // Required methods
    fn box_type(&self) -> BoxType;
    fn box_payload_size(&self) -> u64;
    fn children<'a>(&'a self) -> Box<dyn Iterator<Item = &'a dyn BaseBox> + 'a>;

    // Provided methods
    fn box_size(&self) -> BoxSize { ... }
    fn is_unknown_box(&self) -> bool { ... }
}
Expand description

全てのボックスが実装するトレイト

本来なら Box という名前が適切だが、それだと標準ライブラリの std::boxed::Box と名前が 衝突してしまうので、それを避けるために BaseBox としている

Required Methods§

Source

fn box_type(&self) -> BoxType

ボックスの種別

Source

fn box_payload_size(&self) -> u64

ボックスのペイロードのバイト数

Source

fn children<'a>(&'a self) -> Box<dyn Iterator<Item = &'a dyn BaseBox> + 'a>

子ボックスを走査するイテレーターを返す

Provided Methods§

Source

fn box_size(&self) -> BoxSize

ボックスのサイズ

サイズが可変長になる可能性がある mdat ボックス以外はデフォルト実装のままで問題ない

Source

fn is_unknown_box(&self) -> bool

未知のボックスかどうか

基本的には false を返すデフォルト実装のままで問題ないが、 UnknownBoxIgnoredBox を 含む enum を定義する場合には、独自の実装が必要となる

Implementors§