【发布时间】:2020-05-24 00:22:27
【问题描述】:
我想简化以下函数的声明:
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 trait 替换为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?
【问题讨论】:
标签: rust