Skip to main content

serde_v8/
payload.rs

1// Copyright 2018-2026 the Deno authors. MIT license.
2
3// TODO: maybe add a Payload type that holds scope & v8::Value
4// so it can implement Deserialize by itself
5
6// Classifies v8::Values into sub-types
7#[derive(Debug)]
8pub enum ValueType {
9  Null,
10  Bool,
11  Number,
12  BigInt,
13  String,
14  Array,
15  ArrayBuffer,
16  ArrayBufferView,
17  Object,
18}
19
20impl ValueType {
21  pub fn from_v8(v: v8::Local<v8::Value>) -> ValueType {
22    if v.is_boolean() {
23      return Self::Bool;
24    } else if v.is_number() {
25      return Self::Number;
26    } else if v.is_string() {
27      return Self::String;
28    } else if v.is_array() {
29      return Self::Array;
30    } else if v.is_big_int() {
31      return Self::BigInt;
32    } else if v.is_array_buffer() {
33      return Self::ArrayBuffer;
34    } else if v.is_array_buffer_view() {
35      return Self::ArrayBufferView;
36    } else if v.is_object() {
37      return Self::Object;
38    } else if v.is_null_or_undefined() {
39      return Self::Null;
40    }
41    panic!("serde_v8: unknown ValueType for v8::Value")
42  }
43}