Skip to main content

TorrentMetaV2

Struct TorrentMetaV2 

Source
pub struct TorrentMetaV2 {
    pub info_hashes: InfoHashes,
    pub info_bytes: Option<Bytes>,
    pub announce: Option<String>,
    pub announce_list: Option<Vec<Vec<String>>>,
    pub comment: Option<String>,
    pub created_by: Option<String>,
    pub creation_date: Option<i64>,
    pub info: InfoDictV2,
    pub piece_layers: BTreeMap<Id32, Vec<u8>>,
    pub ssl_cert: Option<Vec<u8>>,
}
Expand description

Parsed v2 .torrent file (BEP 52).

Fields§

§info_hashes: InfoHashes

Unified info hashes (v2 SHA-256, optionally truncated v1 for compat).

§info_bytes: Option<Bytes>

Raw info dict bytes for BEP 9 metadata serving.

§announce: Option<String>

Primary announce URL.

§announce_list: Option<Vec<Vec<String>>>

Announce list (BEP 12).

§comment: Option<String>

Comment.

§created_by: Option<String>

Created by.

§creation_date: Option<i64>

Creation date (unix timestamp).

§info: InfoDictV2

v2 info dictionary.

§piece_layers: BTreeMap<Id32, Vec<u8>>

Piece layers: pieces_root → concatenated SHA-256 hashes.

Each entry maps a file’s Merkle root to the concatenated piece-level hashes. Only present for files larger than piece_length.

§ssl_cert: Option<Vec<u8>>

PEM-encoded SSL CA certificate from the info dict, if present.

Implementations§

Source§

impl TorrentMetaV2

Source

pub fn validate_piece_layers(&self) -> Result<(), Error>

Validate that piece layers match the file tree.

Each file larger than piece_length must have a corresponding piece layer with the correct number of hashes.

§Errors

Returns an error if a file is missing its piece layer or has the wrong hash count.

Source

pub fn file_piece_hashes(&self, pieces_root: &Id32) -> Option<Vec<Id32>>

Get piece hashes for a file by its Merkle root.

Source

pub fn piece_layer_for_file(&self, file_index: usize) -> Option<Vec<Id32>>

Access piece layer by file index (libtorrent parity).

Source

pub fn take_piece_layers(&mut self) -> BTreeMap<Id32, Vec<u8>>

Take and clear piece layers (memory optimization, libtorrent parity).

Returns the layers and clears them from the struct. Useful after verification is complete to free memory.

Trait Implementations§

Source§

impl Clone for TorrentMetaV2

Source§

fn clone(&self) -> TorrentMetaV2

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TorrentMetaV2

Source§

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

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

impl From<TorrentMetaV2> for TorrentMeta

Source§

fn from(meta: TorrentMetaV2) -> Self

Converts to this type from the input type.

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.