Распаковка кортежа в качестве аргументов и вызов функции с этими значениями покрывается Можно ли распаковать кортеж в аргументы функции? , но можно ли сделать тот же трюк с методами?
#![feature(fn_traits)]
struct Foo;
impl Foo {
fn method(&self, a: i32, b: i32) {
println!("{:?}, {:?}", a, b);
}
}
fn main() {
let foo = Foo;
let tuple = (10, 42);
// does not compile
//foo.method.call(tuple);
// nor this one
//std::ops::Fn::call(&foo.method, tuple);
}
Для обоих я получаю следующую ошибку:
error[E0615]: attempted to take value of method `method` on type `Foo`
--> src/main.rs:20:9
|
20 | foo.method.call(tuple);
| ^^^^^^ help: use parentheses to call the method: `method(...)`
Я не контролирую вызываемый метод, поэтому изменение подписи для принятия кортежей не вариант.