在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变量的作用域-它必须不是函数的泛型,因为这太有希望了。好的,一切都好。谢谢你的帮助