林试图将通过Vector
自定义的结构到了在一个新的任务执行的功能。 我已经实现了Clone
特点,我认为需要这个,但显然我想传递的载体需要实现'static+Send
为了在封闭的环境中拍摄的。 我不完全知道如何去满足那些一生规格?
我试图从这个函数启动进程
pub fn start(server: Server, ip: &str, port: u16) {
// Other things happening
spawn(proc() {
event_loop(server.events.clone(), from_conn_pool)
});
}
fn event_loop(events: Vec<Event>, from_conn_pool: Receiver<Vec<Socket>>) {
// Wizard magic
}
我收到的错误是: error: cannot capture variable of type
rustic_io::server::Server<'_>
, which does not fulfill 'static+Send
, in a bounded closure
server.rs
pub struct Server<'a> {
pub sockets: Vec<Socket<'a>>,
pub events: Vec<Event<'a>>
}
event.rs
pub struct Event<'a> {
pub name: String,
pub execute: &'a fn(data: &str, server: super::Server)
}
impl<'a> Event<'a> {
pub fn new(event: &str, execute: &'a fn(data: &str, server: super::Server)) -> Event<'a> {
Event {
name: String::from_str(event),
execute: execute
}
}
}
impl<'a> Clone for Event<'a> {
fn clone(&self) -> Event<'a> {
Event {
name: self.name.clone(),
execute: self.execute
}
}
}
该事件循环任务将刚刚超过各种流,如果数据循环读取匹配的特定事件的名称,它触发了与此相关的功能。 从锈文件,我可以看到,您可以通过调用产卵像这样开始了一个名为功能关闭:
// Print something profound in a different task using a named function
fn print_message() { println!("I am running in a different task!"); }
spawn(print_message);
其中,我认为这是我应该产卵任务的方式,因为它是越来越执行一个名为功能。 林假设,因为我叫它为spawn(proc(){ ... })
它期待的一切将在被封,可拥有? 我试过产卵任务为spawn(event_loop(arg, arg2))
但编译器给我: error: mismatched types: expected
proc():Send
but found ()
(expected fn but found ())
在这一点上,我有不知道如何获取Vec<Event>
到一个新的任务?