ez_bencoding/decode/
str.rs1use std::borrow::Cow;
2
3use super::{token::BdecodeTokenType, IBdecodeNode};
4
5crate::primitive_bdecode_node!(Str);
6
7impl Str {
8 pub fn value(&self) -> Cow<[u8]> {
10 assert!(self.token_type() == BdecodeTokenType::Str);
11
12 let token = &self.tokens[self.token_index as usize];
13 let start = token.offset() as usize;
14 let header_size = token.header_size() as usize + 1;
15 let end = self.tokens[(self.token_index + 1) as usize].offset() as usize;
16
17 let buf = &self.buffer[start + header_size..end];
18 let rst = Cow::Borrowed(buf);
19
20 rst
21 }
22
23 pub fn to_json(&self) -> String {
24 let val = String::from_utf8_lossy_owned(self.value().into_owned());
25 format!(r#""{}""#, val)
26 }
27}