在Rust中创建工厂功能
我刚开始学习生锈,我遇到了一些障碍 我正在尝试创建一个初始化在Rust中创建工厂功能,rust,reference,dangling-pointer,Rust,Reference,Dangling Pointer,我刚开始学习生锈,我遇到了一些障碍 我正在尝试创建一个初始化rusty_v8库的函数。他们提供了以下设置代码: use rusty_v8 as v8; let platform = v8::new_default_platform().unwrap(); v8::V8::initialize_platform(platform); v8::V8::initialize(); let isolate = &mut v8::Isolate::new(Default::default())
rusty_v8
库的函数。他们提供了以下设置代码:
use rusty_v8 as v8;
let platform = v8::new_default_platform().unwrap();
v8::V8::initialize_platform(platform);
v8::V8::initialize();
let isolate = &mut v8::Isolate::new(Default::default());
let scope = &mut v8::HandleScope::new(isolate);
let context = v8::Context::new(scope);
let scope = &mut v8::ContextScope::new(scope, context);
let code = v8::String::new(scope, "'Hello' + ' World!'").unwrap();
println!("javascript code: {}", code.to_rust_string_lossy(scope));
let script = v8::Script::compile(scope, code, None).unwrap();
let result = script.run(scope).unwrap();
let result = result.to_string(scope).unwrap();
println!("result: {}", result.to_rust_string_lossy(scope));
现在,我给自己设定了一个挑战,就是如何让这个软件可以重复使用。我希望能够调用某种类型的init
函数,该函数返回一个v8::Scope
对象,我可以使用该对象执行v8::Script
对象。我已成功创建此函数:
pub(crate) fn init<'a>() -> v8::ContextScope<'a, v8::HandleScope<'a, v8::Context>> {
let platform = v8::new_default_platform().unwrap();
v8::V8::initialize_platform(platform);
v8::V8::initialize();
let mut isolate = v8::Isolate::new(Default::default());
let mut scope = v8::HandleScope::new(&mut isolate);
let context = v8::Context::new(&mut scope);
return v8::ContextScope::new(&mut scope, context);
}
pub(板条箱)fn init默认的Rust规则不允许您编写想要编写的函数
每当你看到一个有生命周期的类型,比如HandleScope R
哪里
凯文,这正是我要找的。很抱歉反应太晚,我只是没有机会好好看看这个。我不想提它,但它仍然没有编译。没有一个变量是长寿的enough@JacobSchneider哎呀,我忘了修复lifetime变量的作用域-它必须不是函数的泛型,因为这太有希望了。好的,一切都好。谢谢你的帮助