Trait Encode

Source
pub trait Encode {
    // Required method
    fn encode(self, writer: &mut dyn Write) -> Result<(), Error>;
}
Expand description

Encode is a trait to encode a Bencodex value.

Required Methods§

Source

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

Encode a Bencodex value from this type.

If encoding succeeds, return Ok. Otherwise, it will pass std::io::Error occurred in inner logic.

§Examples

Basic usage with BencodexValue::Text:

use bencodex::{ Encode, BencodexValue };

let text = "text".to_string();
let mut vec = Vec::new();
text.encode(&mut vec);

assert_eq!(vec, vec![b'u', b'4', b':', b't', b'e', b'x', b't']);

Implementations on Foreign Types§

Source§

impl Encode for bool

Source§

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

use bencodex::{ Encode };

let mut buf = vec![];
true.encode(&mut buf);
assert_eq!(buf, b"t");
Source§

impl Encode for i64

Source§

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

use bencodex::{ Encode };

let mut buf = vec![];
1004i64.encode(&mut buf);
assert_eq!(buf, b"i1004e");
Source§

impl Encode for BTreeMap<BencodexKey, BencodexValue>

Source§

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

use bencodex::{ Encode, BencodexKey, BencodexValue };
use std::collections::BTreeMap;

let mut dict: BTreeMap<BencodexKey, BencodexValue> = BTreeMap::new();
dict.insert("".into(), "".into());

let mut buf = vec![];
dict.encode(&mut buf);

assert_eq!(buf, b"du0:u0:e")
Source§

impl Encode for String

Source§

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

use bencodex::{ Encode };

let mut buf = vec![];
"foo".to_string().encode(&mut buf);
assert_eq!(buf, b"u3:foo");
Source§

impl Encode for Vec<BencodexValue>

Source§

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

use bencodex::{ Encode, BencodexValue };
use num_bigint::BigInt;

let list: Vec<BencodexValue> = vec![0.into(), BencodexValue::Null];
let mut buf = vec![];
list.encode(&mut buf);
assert_eq!(buf, b"li0ene");
Source§

impl Encode for Vec<u8>

Source§

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

use bencodex::{ Encode };

let mut buf = vec![];
b"hello".to_vec().encode(&mut buf);
assert_eq!(buf, b"5:hello");
Source§

impl Encode for BigInt

Source§

fn encode(self, writer: &mut dyn Write) -> Result<(), Error>

use bencodex::{ Encode };
use num_bigint::BigInt;

let mut buf = vec![];
BigInt::from(0).encode(&mut buf);
assert_eq!(buf, b"i0e");

Implementors§