【问题标题】:How to add a Sized supertrait to a Rust trait?如何将 Sized 超特征添加到 Rust 特征?
【发布时间】:2016-11-01 10:44:28
【问题描述】:

this issue page for Rust,它给出了core::num::bignum::FullOps的以下示例代码:

pub trait FullOps {
    ...
    fn full_mul(self, other: Self, carry: Self) -> (Self /*carry*/, Self);
    ...
}

然后它说:

这里的函数full_mul返回一个(Self, Self)元组,它只是 当Self-type 是Sized 时格式良好-出于这个原因和其他原因, 仅当 SelfSized 时,该特征才有意义。在这个解决方案 案例和大多数其他人是添加缺少的Sized supertrait。

如何添加缺少的Sized supertrait?

【问题讨论】:

    标签: rust traits


    【解决方案1】:

    “超级特质”只是一个界限,真的。

    您可以在特征级别或方法级别设置边界。在这里,建议您将其置于 trait 级别:

    pub trait FullOps: Sized {
        fn full_mul(self, other: Self, carry: Self) -> (Self, Self);
    }
    

    另一种解决方案是将其置于方法级别:

    pub trait FullOps {
        fn full_mul(self, other: Self, carry: Self) -> (Self, Self)
            where Self: Sized;
    }
    

    【讨论】:

      【解决方案2】:

      很简单:把第一行改成:

      pub trait FullOps : Sized {
      

      Playground link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-03
        • 2017-11-26
        • 2019-05-28
        • 1970-01-01
        • 2018-06-27
        • 2015-06-07
        • 1970-01-01
        相关资源
        最近更新 更多