我试图给一个函数一个别名,这样每当我实现这个特性时我就不必写它的签名:
type PhySend = Fn();
trait MyTrait {
fn set_phy_send<F: PhySend>(callback: F);
}
Run Code Online (Sandbox Code Playgroud)
但我得到:
type aliases cannot be used as traits rustc(E0404)
Run Code Online (Sandbox Code Playgroud)
那么,是不是不可能给特征/函数签名赋予别名?每次我实现这个特性时都写这个签名会很无聊。
这是因为别名可以是任何类型。尝试定义一个新特征。
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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |