¿Cómo hacer alias de rasgos?
Nov 08 2020
Estoy tratando de dar un alias a una función para no tener que escribir su firma cada vez que implemento este rasgo:
type PhySend = Fn();
trait MyTrait {
fn set_phy_send<F: PhySend>(callback: F);
}
Pero obtengo:
type aliases cannot be used as traits rustc(E0404)
Entonces, ¿es imposible dar alias a los rasgos / firmas de funciones? Sería aburrido escribir esta firma cada vez que implemento este rasgo.
Respuestas
5 SergedeGossondeVarennes Nov 09 2020 at 05:16
Es porque los alias pueden ser de cualquier tipo. En su lugar, intente definir un nuevo rasgo.
trait your_function<T> : FnOnce() -> T {}
impl<T, U> your_function<T> for U where U: FnOnce() -> T {}
fn make_tea<F, T>(f: F) -> T
where F: your_function<T>
{
f()
}
fn main() {
make_tea(|| String::new());
}