我有一个如下的 rust 实现,在默认实现中,对于枚举,我需要返回最后一个元素,我需要在不对其进行硬编码的情况下实现它。
#[cfg_attr(feature = "std", derive(Debug))]
#[derive(Clone, PartialEq, Eq)]
pub enum Region<CountryId> {
None,
Category(CountryId),
}
#[cfg_attr(feature = "std", derive(Debug))]
#[derive(Clone, PartialEq, Eq)]
pub struct Litrature1<CountryId> {
pub Seek: Region<CountryId>,
pub Write: Region<CountryId>,
}
#[cfg_attr(feature = "std", derive(Debug))]
#[derive(Clone, PartialEq, Eq)]
pub struct Litrature2<CountryId> {
pub Seek: Region<CountryId>,
pub Write: Region<CountryId>,
pub Work: Region<CountryId>,
}
#[cfg_attr(feature = "std", derive(Debug))]
#[derive(Clone, PartialEq, Eq)]
pub enum Alphabets<CountryId> {
A1(Litrature1<CountryId>),
A2(Litrature1<CountryId>)
}
impl<CountryId> Default for Alphabets<CountryId> {
fn default() -> Self {
// How to return the last element of the enum as default?
Alphabets<CountryId>::A2
}
}
我不确定如何进行这项工作
我假设您基本上希望一直使用默认值,其中每个区域默认为Region::None
. 在这种情况下,定义Default
每个嵌套类型最有意义,例如
默认为 Region
impl<CountryId> Default for Region<CountryId> {
fn default() -> Self {
Region::None
}
}
默认为 Litrature1
impl<CountryId> Default for Litrature1<CountryId> {
fn default() -> Self {
Litrature1 {
Seek: Default::default(),
Write: Default::default(),
}
}
}
默认为 Litrature2
impl<CountryId> Default for Litrature2<CountryId> {
fn default() -> Self {
Litrature2 {
Seek: Default::default(),
Write: Default::default(),
Work: Default::default(),
}
}
}
默认为 Alphabets
impl<CountryId> Default for Alphabets<CountryId> {
fn default() -> Self {
Alphabets::A2(Default::default())
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句