pub struct Torrent {
    pub announce: Option<String>,
    pub announce_list: Option<AnnounceList>,
    pub length: Integer,
    pub files: Option<Vec<File>>,
    pub name: String,
    pub piece_length: Integer,
    pub pieces: Vec<Piece>,
    pub extra_fields: Option<Dictionary>,
    pub extra_info_fields: Option<Dictionary>,
}
Expand description

Everything found in a .torrent file.

Modeled after the specifications in BEP 3 and BEP 12. Unknown/extension fields will be placed in extra_fields (if the unknown fields are found in the info dictionary then they are placed in extra_info_fields). If you need any of those extra fields you would have to parse it yourself.

Fields

announce: Option<String>

URL of the torrent’s tracker.

announce_list: Option<AnnounceList>

Announce list as defined in BEP 12.

length: Integer

Total torrent size in bytes (i.e. sum of all files’ sizes).

files: Option<Vec<File>>

If the torrent contains only 1 file then files is None.

name: String

If the torrent contains only 1 file then name is the file name. Otherwise it’s the suggested root directory’s name.

piece_length: Integer

Block size in bytes.

pieces: Vec<Piece>

SHA1 hashs of each block.

extra_fields: Option<Dictionary>

Top-level fields not defined in BEP 3.

extra_info_fields: Option<Dictionary>

Fields in info not defined in BEP 3.

Implementations

Parse bytes and return the extracted Torrent.

If bytes is missing any required field (e.g. info), or if any other error is encountered (e.g. IOError), then Err(error) will be returned.

Parse the content of the file at path and return the extracted Torrent.

If the file at path is missing any required field (e.g. info), or if any other error is encountered (e.g. IOError), then Err(error) will be returned.

Encode self as bencode and write the result to dst.

Encode self as bencode and write the result to path.

path must be the path to a file.

“This function will create a file if it does not exist, and will truncate it if it does.”

Note: it is the client’s responsibility to ensure that all directories in path actually exist (e.g. by calling create_dir_all).

Encode self as bencode and return the result in a Vec.

Construct the info dict based on the fields of self.

Certain operations on torrents, such as calculating info hashs, require the extracted info dict. This convenience method does that.

Note that the info dict is constructed each time this method is called (i.e. the return value is not cached). If caching is needed then the caller should handle that.

Since self is taken by reference, and the result is returned by value, certain values will be cloned. Please be aware of this overhead.

Calculate the Torrent’s info hash as defined in BEP 3.

Note that the calculated info hash is not cached. So if this method is called multiple times, multiple calculations will be performed. To avoid that, the caller should cache the return value as needed.

Calculate the Torrent’s info hash as defined in BEP 3.

Note that the calculated info hash is not cached. So if this method is called multiple times, multiple calculations will be performed. To avoid that, the caller should cache the return value as needed.

Calculate the Torrent’s magnet link as defined in BEP 9.

The dn parameter is set to self.name.

Either self.announce or all trackers in self.announce_list will be used, meaning that there might be multiple tr entries. We don’t use both because per BEP 12: “If the client is compatible with the multitracker specification, and if the announce-list key is present, the client will ignore the announce key and only use the URLs in announce-list.”

If neither self.announce nor self.announce_list is present, the output won’t contain any tr parameter.

The x.pe parameter (for peer addresses) is currently not supported.

self.extra_fields["url-list"] will be used to construct ws parameters. It must be either a string or a list of strings.

Check if this torrent is private as defined in BEP 27.

Returns true if private maps to a bencode integer 1. Returns false otherwise.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Formats the value using the given formatter. Read more

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

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

The error type produced by a failed conversion.

Convert the given value into an approximately equivalent representation.

The error type produced by a failed conversion.

Convert the subject into an approximately equivalent representation.

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Approximate the subject with the default scheme.

Approximate the subject with a specific scheme.

Approximate the subject to a given type with the default scheme.

Approximate the subject to a given type with a specific scheme.

Convert the subject to a given type.

Attempt to convert the subject to a given type.

Attempt a value conversion of the subject to a given type.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

Converts the given value to a String. Read more

The error type produced by a failed conversion.

Convert the given value into the subject type.

The type returned in the event of a conversion error.

Performs the conversion.

The error type produced by a failed conversion.

Convert the subject into the destination type.

The type returned in the event of a conversion error.

Performs the conversion.

The error type produced by a failed conversion.

Convert the given value into an exactly equivalent representation.

The error type produced by a failed conversion.

Convert the subject into an exactly equivalent representation.