mirror of
https://github.com/denoland/deno.git
synced 2025-01-21 21:50:00 -05:00
feat(serde_v8): add serde_v8::Global (#14761)
This commit is contained in:
parent
f564497630
commit
caaece0d9a
3 changed files with 44 additions and 0 deletions
|
@ -16,6 +16,7 @@ pub use magic::bytestring::ByteString;
|
||||||
pub use magic::detached_buffer::DetachedBuffer;
|
pub use magic::detached_buffer::DetachedBuffer;
|
||||||
pub use magic::string_or_buffer::StringOrBuffer;
|
pub use magic::string_or_buffer::StringOrBuffer;
|
||||||
pub use magic::u16string::U16String;
|
pub use magic::u16string::U16String;
|
||||||
|
pub use magic::Global;
|
||||||
pub use magic::Value;
|
pub use magic::Value;
|
||||||
pub use ser::{to_v8, Serializer};
|
pub use ser::{to_v8, Serializer};
|
||||||
pub use serializable::{Serializable, SerializablePkg};
|
pub use serializable::{Serializable, SerializablePkg};
|
||||||
|
|
41
serde_v8/magic/global.rs
Normal file
41
serde_v8/magic/global.rs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
|
||||||
|
|
||||||
|
use crate::magic::transl8::impl_magic;
|
||||||
|
use crate::magic::transl8::FromV8;
|
||||||
|
use crate::magic::transl8::ToV8;
|
||||||
|
|
||||||
|
pub struct Global {
|
||||||
|
pub v8_value: v8::Global<v8::Value>,
|
||||||
|
}
|
||||||
|
impl_magic!(Global);
|
||||||
|
|
||||||
|
impl From<v8::Global<v8::Value>> for Global {
|
||||||
|
fn from(v8_value: v8::Global<v8::Value>) -> Self {
|
||||||
|
Self { v8_value }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<Global> for v8::Global<v8::Value> {
|
||||||
|
fn from(v: Global) -> Self {
|
||||||
|
v.v8_value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToV8 for Global {
|
||||||
|
fn to_v8<'a>(
|
||||||
|
&self,
|
||||||
|
scope: &mut v8::HandleScope<'a>,
|
||||||
|
) -> Result<v8::Local<'a, v8::Value>, crate::Error> {
|
||||||
|
Ok(v8::Local::new(scope, self.v8_value.clone()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FromV8 for Global {
|
||||||
|
fn from_v8(
|
||||||
|
scope: &mut v8::HandleScope,
|
||||||
|
value: v8::Local<v8::Value>,
|
||||||
|
) -> Result<Self, crate::Error> {
|
||||||
|
let global = v8::Global::new(scope, value);
|
||||||
|
Ok(global.into())
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,10 +2,12 @@
|
||||||
pub mod buffer;
|
pub mod buffer;
|
||||||
pub mod bytestring;
|
pub mod bytestring;
|
||||||
pub mod detached_buffer;
|
pub mod detached_buffer;
|
||||||
|
mod global;
|
||||||
pub(super) mod rawbytes;
|
pub(super) mod rawbytes;
|
||||||
pub mod string_or_buffer;
|
pub mod string_or_buffer;
|
||||||
pub mod transl8;
|
pub mod transl8;
|
||||||
pub mod u16string;
|
pub mod u16string;
|
||||||
pub mod v8slice;
|
pub mod v8slice;
|
||||||
mod value;
|
mod value;
|
||||||
|
pub use global::Global;
|
||||||
pub use value::Value;
|
pub use value::Value;
|
||||||
|
|
Loading…
Add table
Reference in a new issue