diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-03-26 03:36:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-25 22:36:46 -0400 |
commit | 3d2e05dc7b6735fe0b81ceb6fe469270da56aff4 (patch) | |
tree | 6f62852cb1ae3eee02ab51f7115703665ad232d1 /serde_v8/src/payload.rs | |
parent | e7954413e16d5814db5da6389f8d6e0c328812aa (diff) |
Introduce serde_v8 (#9722)
Diffstat (limited to 'serde_v8/src/payload.rs')
-rw-r--r-- | serde_v8/src/payload.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/serde_v8/src/payload.rs b/serde_v8/src/payload.rs new file mode 100644 index 000000000..63562ac34 --- /dev/null +++ b/serde_v8/src/payload.rs @@ -0,0 +1,33 @@ +use rusty_v8 as v8; + +// TODO: maybe add a Payload type that holds scope & v8::Value +// so it can implement Deserialize by itself + +// Classifies v8::Values into sub-types +pub enum ValueType { + Null, + Bool, + Number, + String, + Array, + Object, +} + +impl ValueType { + pub fn from_v8(v: v8::Local<v8::Value>) -> ValueType { + if v.is_boolean() { + return Self::Bool; + } else if v.is_number() { + return Self::Number; + } else if v.is_string() { + return Self::String; + } else if v.is_array() { + return Self::Array; + } else if v.is_object() { + return Self::Object; + } else if v.is_null_or_undefined() { + return Self::Null; + } + panic!("serde_v8: unknown ValueType for v8::Value") + } +} |