summaryrefslogtreecommitdiff
path: root/serde_v8/magic/buffer.rs
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2022-05-13 12:53:13 +0200
committerGitHub <noreply@github.com>2022-05-13 12:53:13 +0200
commit67e5a850cc9b37b76638cfbac9dee08286a3469a (patch)
tree6e8f3f93ba54f572173fb9d0fb588173157c941c /serde_v8/magic/buffer.rs
parent3e7afb8918fd0f6cedf839a7ebaae6aaee5e66ad (diff)
feat(serde_v8): bytes::Bytes support (#14412)
Diffstat (limited to 'serde_v8/magic/buffer.rs')
-rw-r--r--serde_v8/magic/buffer.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/serde_v8/magic/buffer.rs b/serde_v8/magic/buffer.rs
index 81f550bcb..da87c8b86 100644
--- a/serde_v8/magic/buffer.rs
+++ b/serde_v8/magic/buffer.rs
@@ -144,3 +144,19 @@ impl FromV8 for ZeroCopyBuf {
Ok(Self::FromV8(V8Slice::from_v8(scope, value)?))
}
}
+
+impl From<ZeroCopyBuf> for bytes::Bytes {
+ fn from(zbuf: ZeroCopyBuf) -> bytes::Bytes {
+ match zbuf {
+ ZeroCopyBuf::FromV8(v) => v.into(),
+ // WARNING(AaronO): potential footgun, but will disappear in future ZeroCopyBuf refactor
+ ZeroCopyBuf::ToV8(v) => v
+ .lock()
+ .unwrap()
+ .take()
+ .expect("ZeroCopyBuf was empty")
+ .into(),
+ ZeroCopyBuf::Temp(v) => v.into(),
+ }
+ }
+}