我想简化以下函数的声明:
use regex::Regex;
fn oper<'a, F>(regex: &str, op: F) -> (Regex, Box<dyn Fn(i32, i32) -> i32 + 'a>)
where F: Fn(i32, i32) -> i32 + 'a
{
(Regex::new(regex).unwrap(), Box::new(op))
}
我试图用返回值替换Fn
特征F
,但它引发了一个错误:
fn oper<'a, F>(regex: &str, op: F) -> (Regex, Box<dyn F>)
where F: Fn(i32, i32) -> i32 + 'a
{
(Regex::new(regex).unwrap(), Box::new(op))
}
error[E0404]: expected trait, found type parameter `F`
--> src/lib.rs:5:55
|
5 | fn oper<'a, F>(regex: &str, op: F) -> (Regex, Box<dyn F>)
| ^ help: a trait with a similar name exists: `Fn`
error: aborting due to previous error
如何简化此声明以避免重复Fn(i32, i32) -> i32 + 'a
?