bencode_encoder/
decoder.rs1use std::fs::File;
2use std::io::{BufReader, Read};
3use std::path::Path;
4
5use crate::errors::BencodeResult;
6use crate::protocol::decode;
7use crate::types::Type;
8
9pub struct Decoder;
10
11impl Decoder {
12 pub fn decode<I>(it: &mut I) -> BencodeResult<Type>
13 where
14 I: Iterator<Item = u8>
15 {
16 match decode(it) {
17 Err(err) => Err(err.into()),
18 Ok(t) => Ok(t),
19 }
20 }
21
22 pub fn decode_from<P>(path: P) -> BencodeResult<Type>
23 where
24 P: AsRef<Path>
25 {
26 let file = File::open(path)?;
27 let mut reader = BufReader::new(file).bytes().map(|c| c.unwrap());
28 let decoded = decode(&mut reader)?;
29
30 Ok(decoded)
31 }
32}