Определение типа функции asyn c в Rust - PullRequest
0 голосов
/ 22 февраля 2020

Если я хочу определить тип, который представляет функцию, я могу написать:

type FS = fn(i32) -> i32;

Как определить асин * c функцию?

type FA = async fn(i32) -> i32; // invalid syntax
type FA = fn(i32) -> impl Future<i32>; // unstable and not allowed
type FA<R> = fn(i32) -> R where R impl Future<i32>; // invalid syntax

Также как бы я это сделал, если бы хотел использовать черты Fn / FnMut / FnOnce?

1 Ответ

1 голос
/ 22 февраля 2020

Правильный синтаксис:

type FA<R: Future<Output = i32>> = fn(i32) -> R;

Однако компилятор предупреждает, что границы для псевдонимов типов не применяются, поэтому мы можем его опустить:

type FA<R> = fn(i32) -> R;

Тогда мы можем использовать вот так ( детская площадка ):

fn foo(f: FA<impl Future<Output = i32>>) {
    let _ = f(7);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...