3Hren / 3Hren/msgpack-rust

rmp-serde: Failed to deserialize &[u8]

Open
#163 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
1.4k
Forks
162
PR merge metrics
No merged PRs in 30d

Description

I have a basic question. I have the following code (rmp-serde version = `0.13.7`):

```rust
#[derive(Debug, Deserialize, Serialize)]
struct Data<'a> {
buf: &'a [u8]
}

fn codec() -> Result<(), Error> {
let buf = b"hello";

let d = Data{buf: buf.as_ref()};

let mut outbuf = Vec::new();
d.serialize(&mut Serializer::new_named(&mut outbuf))?;

let inbuf = outbuf.as_slice();
let mut de = Deserializer::from_slice(inbuf);
let d2: Data = serde::Deserialize::deserialize(&mut de)?;
println!("decoded data = {:?}", d2);

Ok(())
}

```

The deserialization fails with error: `Error: Syntax("invalid type: sequence, expected a borrowed byte array")`. The code works if `buf: &'a [u8]` is changed to `buf: &'a str`.

Does `&'a [u8]` needs a different treatment?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.