torrust_tracker_contrib_bencode/
lib.rs1mod access;
39mod cow;
40mod error;
41mod mutable;
42mod reference;
43
44pub mod inner {
46 pub use crate::cow::BCowConvert;
47}
48
49pub mod ext {
51 #[allow(clippy::module_name_repetitions)]
52 pub use crate::access::bencode::BRefAccessExt;
53 #[allow(clippy::module_name_repetitions)]
54 pub use crate::access::convert::BConvertExt;
55}
56
57#[deprecated(since = "1.0.0", note = "use `MutKind` instead.")]
58pub use crate::access::bencode::MutKind as BencodeMutKind;
59#[deprecated(since = "1.0.0", note = "use `RefKind` instead.")]
60pub use crate::access::bencode::RefKind as BencodeRefKind;
61pub use crate::access::bencode::{BMutAccess, BRefAccess, MutKind, RefKind};
62pub use crate::access::convert::BConvert;
63pub use crate::access::dict::BDictAccess;
64pub use crate::access::list::BListAccess;
65pub use crate::error::{BencodeConvertError, BencodeConvertResult, BencodeParseError, BencodeParseResult};
66pub use crate::mutable::bencode_mut::BencodeMut;
67pub use crate::reference::bencode_ref::BencodeRef;
68pub use crate::reference::decode_opt::BDecodeOpt;
69
70const BEN_END: u8 = b'e';
71const DICT_START: u8 = b'd';
72const LIST_START: u8 = b'l';
73const INT_START: u8 = b'i';
74
75const BYTE_LEN_LOW: u8 = b'0';
76const BYTE_LEN_HIGH: u8 = b'9';
77const BYTE_LEN_END: u8 = b':';
78
79#[macro_export]
81macro_rules! ben_map {
82( $($key:expr => $val:expr),* ) => {
83 {
84 use $crate::{BMutAccess, BencodeMut};
85 use $crate::inner::BCowConvert;
86
87 let mut bencode_map = BencodeMut::new_dict();
88 {
89 let map = bencode_map.dict_mut().unwrap();
90 $(
91 map.insert(BCowConvert::convert($key), $val);
92 )*
93 }
94
95 bencode_map
96 }
97 }
98}
99
100#[macro_export]
102macro_rules! ben_list {
103 ( $($ben:expr),* ) => {
104 {
105 use $crate::{BencodeMut, BMutAccess};
106
107 let mut bencode_list = BencodeMut::new_list();
108 {
109 let list = bencode_list.list_mut().unwrap();
110 $(
111 list.push($ben);
112 )*
113 }
114
115 bencode_list
116 }
117 }
118}
119
120#[macro_export]
122macro_rules! ben_bytes {
123 ( $ben:expr ) => {{
124 use $crate::inner::BCowConvert;
125 use $crate::BencodeMut;
126
127 BencodeMut::new_bytes(BCowConvert::convert($ben))
128 }};
129}
130
131#[macro_export]
133macro_rules! ben_int {
134 ( $ben:expr ) => {{
135 use $crate::BencodeMut;
136
137 BencodeMut::new_int($ben)
138 }};
139}