LINUX.ORG.RU

История изменений

Исправление Silerus, (текущая версия) :

В раст enum это уникальный тип. Его можно использовать как стандартный с/с++ enum,если нахлабучить сверху макросы PatrialEq Eq. Его можно использовать как variant или any (так он чаще всего наверное и используется). Например

enum SomeThing{
    Str(String),
    Num(u32),
    Bool(bool)
}

И тогда данные надо вытаскивать одним из способов

let a = SomeThing::Str("hello world".to_string);
if let SomeThing::Str(val) = a{
 println!("{val}");
}
match a{
 SomeThing::Str(val)=>...,
 SomeThing::Num(val)=>...,
 _=> ...
}

Если я правильно понял, что вы спрашиваете

Исходная версия Silerus, :

В раст enum это уникальный тип. Его можно использовать как стандартный с/с++ enum,если нахлабучить сверху макросы PatrialEq Eq. Его можно использовать как variant или any (так он чаще всего наверное и используется). Например

enum SomeThing{
    Str(String),
    Num(u32),
    Bool(bool)
}

И тогда данные надо вытаскивать одним из способов

let a = SomeThing::Str("hello world".to_string);
if let SomeThing::Str(val) = a{
 println("{a}");
}
match a{
 SomeThing::Str(val)=>...,
 SomeThing::Num(val)=>...,
 _=> ...
}

Если я правильно понял, что вы спрашиваете