Crate bt_bencode

Source
Expand description

§BtBencode

BtBencode is a library which can help with Bencode encoding/decoding. Bencode is primarily used in BitTorrent related applications.

It uses the Serde library to serialize and deserialize Bencode data. It is similar to Serde JSON in terms of functionality and implementation.

§Documentation

§Examples

An example serializing a standard Rust collection type and then deserializing into a custom type:

use std::collections::BTreeMap;
use serde_derive::Deserialize;

let mut dict: BTreeMap<String, String> = BTreeMap::new();
dict.insert(String::from("url"), String::from("https://example.com/"));

let serialized_bytes = bt_bencode::to_vec(&dict)?;

#[derive(Deserialize)]
struct Info<'a> {
    url: &'a str,
}

let info: Info = bt_bencode::from_slice(&serialized_bytes)?;
assert_eq!(info.url, "https://example.com/");

An example deserializing from a slice of bytes into a general Value representation and then from the Value instance into a more strongly typed data structure.

use serde_derive::{Serialize, Deserialize};

use bt_bencode::Value;

#[derive(Serialize, Deserialize)]
struct Info {
    t: String,
    url: String,
}

let serialized_bytes = bt_bencode::to_vec(&Info {
    t: String::from("query"),
    url: String::from("https://example.com/"),
})?;

let value: Value = bt_bencode::from_slice(&serialized_bytes)?;
assert_eq!(value["t"].as_str().unwrap(), "query");
assert_eq!(
    value.get("url").and_then(|url| url.as_str()).unwrap(),
    "https://example.com/"
);

let info: Info = bt_bencode::from_value(value)?;
assert_eq!(info.t, "query");
assert_eq!(info.url, "https://example.com/");

§License

Licensed under either of Apache License, Version 2.0 or MIT License at your option.

§Contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Modules§

read
Read trait and helpers to read bytes for the deserializer.
value
Represents valid Bencode data.
write
Write trait and helpers to write bytes for the serializer.

Structs§

ByteString
A sequence of bytes like a Vec<u8>.
Deserializer
A Bencode Deserializer for types which implement Deserialize.
Error
Errors during serialization and deserialization.
Serializer
A Bencode Serializer for types which implement Serialize.

Enums§

ErrorKind
All possible crate errors.
Value
Represents a valid Bencode value.

Functions§

from_reader
Deserializes an instance of T from the bytes of an io::Read type.
from_slice
Deserializes an instance of T from a slice of bytes.
from_value
Deserializes an instance of T from a Value.
to_value
Serializes an instance of T into a Value.
to_vec
Serializes an instance of T into a new Vec as Bencode data.
to_writer
Serializes an instance of T into the writer W as Bencode data.

Type Aliases§

Result
Alias for a Result with a bt_bencode::Error error type.