bencode_encoder/
encoder.rs

1use std::fs::OpenOptions;
2use std::io::Write;
3use std::path::Path;
4
5use crate::BencodeResult;
6use crate::protocol::encode;
7use crate::types::Type;
8
9pub struct Encoder;
10
11impl Encoder {
12    pub fn encode(t: &Type) -> BencodeResult<Vec<u8>> {
13        Ok(encode(t))
14    }
15
16    pub fn encode_to<P>(t: &Type, path: P) -> BencodeResult<()>
17    where
18        P: AsRef<Path>
19    {
20        let mut bytes = encode(t);
21        let mut file = OpenOptions::new()
22            .write(true)
23            .create_new(true)
24            .open(path)?;
25        
26        file.write_all(&mut bytes)?;
27
28        Ok(())
29    }
30}