Serde with bytes maps to Blob (#6009)

* Serde with_bytes maps to Blob

* Bump rust flexbuffers minor version number

Co-authored-by: Casper Neo <cneo@google.com>
This commit is contained in:
Casper
2020-06-28 19:58:08 -07:00
committed by GitHub
parent e810635eaa
commit 8a721f69a1
5 changed files with 14 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "flexbuffers"
version = "0.1.0"
version = "0.1.1"
authors = ["Casper Neo <cneo@google.com>", "FlatBuffers Maintainers"]
edition = "2018"
license = "Apache-2.0"
@@ -16,4 +16,3 @@ serde_derive = "1.0"
byteorder = "1.3.2"
num_enum = "0.5.0"
bitflags = "1.2.1"

View File

@@ -270,7 +270,7 @@ impl<'a> ser::Serializer for &'a mut FlexbufferSerializer {
self.finish_if_not_nested()
}
fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error> {
self.builder.push(v);
self.builder.push(crate::Blob(v));
self.finish_if_not_nested()
}
fn serialize_none(self) -> Result<Self::Ok, Self::Error> {

View File

@@ -8,6 +8,7 @@ flatbuffers = { path = "../../rust/flatbuffers" }
flexbuffers = { path = "../../rust/flexbuffers" }
serde_derive = "1.0"
serde = "1.0"
serde_bytes = "0.11"
[[bin]]
name = "monster_example"

View File

@@ -1,5 +1,3 @@
#![allow(unused_imports)]
use super::rwyw::NonNullString;
use flexbuffers::*;
use quickcheck::{Arbitrary, Gen};
@@ -30,6 +28,7 @@ enum Enum {
b: Array4<i32>,
c: Array2<f64>,
},
Blobs(#[serde(with = "serde_bytes")] Vec<u8>),
}
// There is some upstream bug in deriving Arbitrary for Enum so we manually implement it here.

View File

@@ -432,7 +432,16 @@ fn serde_serious() {
let read = MyTupleStruct::deserialize(reader).unwrap();
assert_eq!(data, read);
}
#[test]
fn serialize_serde_with_bytes_as_blob() {
#[derive(Serialize, Deserialize)]
struct Foo(#[serde(with = "serde_bytes")] Vec<u8>);
let mut s = FlexbufferSerializer::new();
Foo(vec![5, 6, 7, 8]).serialize(&mut s).unwrap();
let reader = Reader::get_root(s.view()).unwrap();
assert_eq!(reader.flexbuffer_type(), FlexBufferType::Blob);
assert_eq!(reader.as_blob(), Blob(&[5, 6, 7, 8]));
}
#[test]
fn iter() {
let mut fxb = Builder::default();