/
githubmirror
/
deno
Обзор
Документация
Войти
/
githubmirror
/
deno
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
libs/serde_v8/examples/basic.rs
65 строк
2 KB
David Sherret
refactor: force a reason on clippy overrides (#32761)
16 мар 2026, 15:41
Не верифицирован
16 мар 2026, 15:41
39a07b2
Код
Авторство
О чём код?
// Copyright 2018-2026 the Deno authors. MIT license. // NB(bartlomieju): this is fine for example code #![allow(clippy::print_stdout, reason = "example code")] use serde::Deserialize; #[derive(Debug, Deserialize)] struct MathOp { pub a: u64, pub b: u64, pub operator: Option<String>, } fn main() { let platform = v8::new_default_platform(0, false).make_shared(); v8::V8::initialize_platform(platform); v8::V8::initialize(); { let isolate = &mut v8::Isolate::new(v8::CreateParams::default()); v8::scope!(handle_scope, isolate); let context = v8::Context::new(handle_scope, Default::default()); let scope = &mut v8::ContextScope::new(handle_scope, context); fn exec<'s>( scope: &mut v8::PinScope<'s, '_>, src: &str, ) -> v8::Local<'s, v8::Value> { let code = v8::String::new(scope, src).unwrap(); let script = v8::Script::compile(scope, code, None).unwrap(); script.run(scope).unwrap() } let v = exec(scope, "32"); let x32: u64 = serde_v8::from_v8(scope, v).unwrap(); println!("x32 = {x32}"); let v = exec(scope, "({a: 1, b: 3, c: 'ignored'})"); let mop: MathOp = serde_v8::from_v8(scope, v).unwrap(); println!( "mop = {{ a: {}, b: {}, operator: {:?} }}", mop.a, mop.b, mop.operator ); let v = exec(scope, "[1,2,3,4,5]"); let arr: Vec<u64> = serde_v8::from_v8(scope, v).unwrap(); println!("arr = {arr:?}"); let v = exec(scope, "['hello', 'world']"); let hi: Vec<String> = serde_v8::from_v8(scope, v).unwrap(); println!("hi = {hi:?}"); let v: v8::Local<v8::Value> = v8::Number::new(scope, 12345.0).into(); let x: f64 = serde_v8::from_v8(scope, v).unwrap(); println!("x = {x}"); } // SAFETY: all isolates have been destroyed, so we can now safely let V8 clean // up its resources. unsafe { v8::V8::dispose(); } v8::V8::dispose_platform(); }