Я смог заставить этот код работать:
fn twice<T: Clone>(fst: impl Fn(T), snd: impl Fn(T)) -> impl Fn(T) {
move |t| {
fst(t.clone());
snd(t)
}
}
Однако я хочу этого (без бокса):
fn sub<T: Clone>(mut fst: impl Fn(T), snd: impl Fn(T)) {
fst = move |t: T| {
fst(t.clone());
snd(t)
};
}
Есть ли способ заставить вторую часть кода работать без упаковки, использования трейтов, приведения типов или любого другого метода? Rust жалуется, что типы не совпадают.
fst
и дайте ему новый тип. 20.01.2019main
, в котором используется решение. Если бы это был просто вопрос повторного использования имени переменной внутри функции, это казалось бы слишком тривиальным запросом, но, может быть, это то, чего на самом деле хотел OP? 20.01.2019