[英]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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.