1use std::{
2 env,
3 fs::File,
4 io::{BufReader, Bytes, Read},
5};
6
7struct Adapter {
8 bytes: Bytes<BufReader<File>>,
9}
10
11impl Iterator for Adapter {
12 type Item = u8;
13 fn next(&mut self) -> Option<<Self as Iterator>::Item> {
14 match self.bytes.next() {
15 Some(Ok(v)) => Some(v),
16 _ => None,
17 }
18 }
19}
20
21fn main() {
22 let f = File::open(
23 env::current_dir()
24 .unwrap()
25 .join("examples")
26 .join("bufreader")
27 .join("bufreader-test.torrent"),
28 )
29 .unwrap();
30 let reader = BufReader::new(f);
31
32 let mut adapter = Adapter {
33 bytes: reader.bytes(),
34 };
35 let bnode = bencodex::parse(&mut adapter).unwrap();
36 let dict = bnode.as_dict().unwrap();
37 assert_eq!(
38 dict.get("bar").unwrap().as_bytes().unwrap(),
39 "spam".as_bytes()
40 );
41 assert_eq!(dict.get("foo").unwrap().as_integer().unwrap(), &42);
42}