【发布时间】:2015-04-26 15:11:22
【问题描述】:
我不明白为什么下面的代码无法编译。似乎 rust 并没有“扩展”类型参数,因为它看起来很适合我。
代码(生锈游戏笔:http://is.gd/gC82I4)
use std::sync::{Arc, Mutex};
struct Data{
func: Option<Box<FnMut(String) + Send>>
}
fn newData<F>(func: Option<Box<F>>) -> Data
where F: FnMut(String) + Send{
Data{
func: func
}
}
fn main(){
let _ = newData(Some(Box::new(|msg|{})));
}
错误
<anon>:10:15: 10:19 error: mismatched types:
expected `core::option::Option<Box<core::ops::FnMut(collections::string::String) + Send>>`,
found `core::option::Option<Box<F>>`
(expected trait core::ops::FnMut,
found type parameter) [E0308]
<anon>:10 func: func
^~~~
error: aborting due to previous error
playpen: application terminated with error code 101
【问题讨论】:
-
顺便说一下,约定会将
newData设为Data::new。
标签: rust