summaryrefslogtreecommitdiff
path: root/serde_v8
diff options
context:
space:
mode:
Diffstat (limited to 'serde_v8')
-rw-r--r--serde_v8/Cargo.toml1
-rw-r--r--serde_v8/src/magic/string_or_buffer.rs3
-rw-r--r--serde_v8/tests/de.rs10
3 files changed, 13 insertions, 1 deletions
diff --git a/serde_v8/Cargo.toml b/serde_v8/Cargo.toml
index c425bed22..1d4c7bd9e 100644
--- a/serde_v8/Cargo.toml
+++ b/serde_v8/Cargo.toml
@@ -11,6 +11,7 @@ description = "Rust to V8 serialization and deserialization"
[dependencies]
serde = { version = "1.0.130", features = ["derive"] }
+serde_bytes = "0.11"
v8 = "0.34.0"
[dev-dependencies]
diff --git a/serde_v8/src/magic/string_or_buffer.rs b/serde_v8/src/magic/string_or_buffer.rs
index 4518fe082..edde2adcd 100644
--- a/serde_v8/src/magic/string_or_buffer.rs
+++ b/serde_v8/src/magic/string_or_buffer.rs
@@ -30,8 +30,9 @@ impl<'de> serde::Deserialize<'de> for StringOrBuffer {
#[derive(serde::Deserialize)]
#[serde(untagged)]
enum StringOrBufferInner {
- String(String),
+ #[serde(with = "serde_bytes")]
Buffer(Vec<u8>),
+ String(String),
}
impl StringOrBufferInner {
diff --git a/serde_v8/tests/de.rs b/serde_v8/tests/de.rs
index 366d6d2b5..fee532518 100644
--- a/serde_v8/tests/de.rs
+++ b/serde_v8/tests/de.rs
@@ -173,6 +173,16 @@ fn de_string_or_buffer() {
assert_eq!(sob.as_slice(), &[0x68, 0x65, 0x6C, 0x6C, 0x6F]);
});
+ dedo("new Uint8Array([97])", |scope, v| {
+ let sob: serde_v8::StringOrBuffer = serde_v8::from_v8(scope, v).unwrap();
+ assert_eq!(sob.as_slice(), &[97]);
+ });
+
+ dedo("new Uint8Array([128])", |scope, v| {
+ let sob: serde_v8::StringOrBuffer = serde_v8::from_v8(scope, v).unwrap();
+ assert_eq!(sob.as_slice(), &[128]);
+ });
+
dedo(
"(Uint8Array.from([0x68, 0x65, 0x6C, 0x6C, 0x6F]))",
|scope, v| {