summaryrefslogtreecommitdiff
path: root/serde_v8/de.rs
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2022-04-24 09:28:46 -0300
committerGitHub <noreply@github.com>2022-04-24 09:28:46 -0300
commit4b7d306a198d020ce2b6fa1c758c71714bfd036c (patch)
tree10de79efbbd30107d0f04538c351b0765ec97a06 /serde_v8/de.rs
parent2eb8c3b82fd54027c35c87ccc94797e34e2e95fd (diff)
perf(serde_v8): zero-copy StringOrBuffer (#14381)
Diffstat (limited to 'serde_v8/de.rs')
-rw-r--r--serde_v8/de.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/serde_v8/de.rs b/serde_v8/de.rs
index fb8b8edcf..54a3ffa5c 100644
--- a/serde_v8/de.rs
+++ b/serde_v8/de.rs
@@ -7,7 +7,9 @@ use crate::keys::{v8_struct_key, KeyCache};
use crate::magic::transl8::FromV8;
use crate::magic::transl8::{visit_magic, MagicType};
use crate::payload::ValueType;
-use crate::{magic, Buffer, ByteString, DetachedBuffer, U16String};
+use crate::{
+ magic, Buffer, ByteString, DetachedBuffer, StringOrBuffer, U16String,
+};
pub struct Deserializer<'a, 'b, 's> {
input: v8::Local<'a, v8::Value>,
@@ -359,6 +361,9 @@ impl<'de, 'a, 'b, 's, 'x> de::Deserializer<'de>
U16String::MAGIC_NAME => {
visit_magic(visitor, U16String::from_v8(self.scope, self.input)?)
}
+ StringOrBuffer::MAGIC_NAME => {
+ visit_magic(visitor, StringOrBuffer::from_v8(self.scope, self.input)?)
+ }
magic::Value::MAGIC_NAME => {
visit_magic(visitor, magic::Value::from_v8(self.scope, self.input)?)
}