簡體   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