【发布时间】:2020-12-11 08:45:12
【问题描述】:
我发现我经常使用这种模式。
Arc<Mutex<dyn SomeTrait + Send>>;
所以我想我会这样做:
pub type NicePtr<T> = Arc<Mutex<dyn T + Send>>;
但这不会编译
Compiling rsim v0.1.0 (C:\work\pdp\rsim)
error[E0404]: expected trait, found type parameter `T`
--> src\common.rs:9:37
|
9 | pub type NicePtr<T> = Arc<Mutex<dyn T + Send>>;
| ^ not a trait
我认为这是可能的,但我只是不知道正确的语法。
【问题讨论】:
-
类型参数目前不能被限制为特征(即使可以,类型别名中的通用边界目前也没有强制执行)。因此,使用类型别名是不可能的;您最好的选择是改用宏。 IMO 将声明保持原样以传达意图比将其隐藏在别名或宏后面更好。
标签: rust