如何制作特征别名? [英] How to make trait aliases?
本文介绍了如何制作特征别名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图给一个函数一个别名,这样每当我实现这个特性时我就不必写它的签名:
I'm trying to give an alias to a function so I don't have to write its signature whenever I implement this trait:
type PhySend = Fn();
trait MyTrait {
fn set_phy_send<F: PhySend>(callback: F);
}
但我明白了:
type aliases cannot be used as traits rustc(E0404)
那么,是不是不可能给特征/函数签名赋予别名?每次实现这个特性都写这个签名会很无聊.
So, is it impossible to give aliases to traits / function signatures? It'd be boring to write this signature every time I implement this trait.
推荐答案
这是因为别名可以是任何类型.尝试定义一个新特征.
It's because aliases can be any type. Try to define a new trait instead.
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());
}
这篇关于如何制作特征别名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文