【发布时间】:2020-04-30 20:37:03
【问题描述】:
有没有办法缩短 rust 中的泛型类型边界? 这是我必须放在很多结构 impls 等上的混乱:
pub struct IncomingClientMessageWithAddress<State, Msg>
where State: AppState + Clone + serde::Serialize + serde::de::DeserializeOwned + std::marker::Unpin + 'static,
Msg: AppEvent + Clone + serde::Serialize + serde::de::DeserializeOwned + std::marker::Unpin + 'static {
...
我基本上想做这样的事情(我知道下面不适用于特质):
type MyStateAlias = AppState + Clone + serde::Serialize + serde::de::DeserializeOwned + std::marker::Unpin + 'static;
type MyEventAlias = AppEvent + Clone + serde::Serialize + serde::de::DeserializeOwned + std::marker::Unpin + 'static;
pub struct IncomingClientMessageWithAddress<State, Msg>
where State: MyStateAlias,
Msg: MyEventAlias {
...
【问题讨论】:
-
对于初学者,您可以导入这些特征,这样您就不必每次都完全使用它们。
-
有一个用于“特征别名”的 RFC,它可以让您为一组约束定义一个名称。 github.com/rust-lang/rfcs/blob/master/text/1733-trait-alias.md。它尚未稳定,但您可以在夜间使用它:play.rust-lang.org/…