В расте эта проблема иначе решается. Гугли actix-web extractors если интересно.
trait Foo { fn run(values: Vec<Value>, t: Self) -> Value; } impl<T: ToJSON> Foo for T { fn run(values: Vec<Value>, t: Self) -> Value { if values.is_empty() { t.to_json() } else { panic!("!") } } } impl<T: FromJSON, U: Foo, F: Fn(T) -> U> Foo for F { fn run(values: Vec<Value>, f: Self) -> Value { let (first, rest) = values.split_first().unwrap(); Foo::run(values, f(first.to_json().unwrap()).to_json() } } Как-то так. Но имей в виду, что это ну очень неидиоматичный код на Rust. И я не уверен, что он вообще рабочий.
Обсуждают сегодня