mirror of
https://github.com/denoland/deno.git
synced 2024-11-26 16:09:27 -05:00
6516130b01
To align with conventions used in our other crates
40 lines
983 B
Rust
40 lines
983 B
Rust
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
|
|
|
|
// TODO: maybe add a Payload type that holds scope & v8::Value
|
|
// so it can implement Deserialize by itself
|
|
|
|
// Classifies v8::Values into sub-types
|
|
#[derive(Debug)]
|
|
pub enum ValueType {
|
|
Null,
|
|
Bool,
|
|
Number,
|
|
String,
|
|
Array,
|
|
ArrayBuffer,
|
|
ArrayBufferView,
|
|
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_array_buffer() {
|
|
return Self::ArrayBuffer;
|
|
} else if v.is_array_buffer_view() {
|
|
return Self::ArrayBufferView;
|
|
} 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")
|
|
}
|
|
}
|