pub fn from_slice(
data: &[u8],
) -> Result<(Vec<Vec<SpanSlice<'_>>>, usize), DecodeError>Expand description
Decodes a slice of bytes into a Vec<Vec<SpanSlice>> object.
The resulting spans have the same lifetime as the initial buffer.
§Arguments
data- A slice of bytes containing the encoded data. Bytes are expected to be encoded msgpack data containing a list of a list of v05 spans.
§Returns
Ok(Vec<Vec<SpanSlice>>)- A vector of decodedVec<SpanSlice>objects if successful.Err(DecodeError)- An error if the decoding process fails.
§Errors
This function will return an error if:
- The array length for trace count or span count cannot be read.
- Any span cannot be decoded.
§Examples
use libdd_tinybytes;
use libdd_trace_utils::msgpack_decoder::v05::from_slice;
use rmp_serde::to_vec;
use std::collections::HashMap;
let data = (
vec!["".to_string()],
vec![vec![(
0,
0,
0,
1,
2,
3,
4,
5,
6,
HashMap::<u32, u32>::new(),
HashMap::<u32, f64>::new(),
0,
)]],
);
let encoded_data = to_vec(&data).unwrap();
let encoded_data_as_tinybytes = libdd_tinybytes::Bytes::from(encoded_data);
let (decoded_traces, _payload_size) =
from_slice(&encoded_data_as_tinybytes).expect("Decoding failed");
assert_eq!(1, decoded_traces.len());
assert_eq!(1, decoded_traces[0].len());
let decoded_span = &decoded_traces[0][0];
assert_eq!("", decoded_span.name);