【发布时间】:2019-01-15 00:07:29
【问题描述】:
我正在尝试实现经典的make_adder 函数,该函数接受一个可添加的事物并返回一个闭包,该闭包接受另一个可添加的事物并返回总和。这是我的尝试:
use std::ops::Add;
fn make_adder<T: Add + Clone>(x: T) -> impl Fn(T) -> T::Output {
move |y| x.clone() + y
}
因为我不想将T 限制为Copy,所以我在闭包内调用clone()。我认为这也意味着总会有一个多余的x 被闭包捕获为“原型”。我能以某种方式做得更好吗?
【问题讨论】: