繁体   English   中英

如何在Rust特征中添加Sized超级特征?

[英]How to add a Sized supertrait to a Rust trait?

Rust的问题页面上 ,它给出了core::num::bignum::FullOps的以下示例代码:

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

然后说:

此处,函数full_mul返回一个(Self, Self)元组,该元组仅在将Self类型设置为Sized时才具有正确的格式-出于该原因和其他原因,该特性仅在Self处于Sized时才有意义。 在这种情况下以及其他大多数情况下,解决方案是添加缺少的Sized超特征。

一个如何添加缺失的Sized特征?

实际上,“超级特质”仅仅是一个界限。

您可以在特征级别或方法级别放置界限。 在这里,建议您将其放置在特征级别:

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;
}

这很简单:将第一行更改为:

pub trait FullOps : Sized {

游乐场链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM