хочу один вариант в другой конвертить и наоборот как это сделать? Попробовал такое сделать, но очевидно, что варианты энама это не тип и я пишу ерунду.
#[derive(Debug, PartialEq)]
enum Enum{
A(f32),
B(f32),
}
impl From<Enum::A> for Enum{
fn from(value: Enum::A) -> Self{
Enum::B(value.0)
}
}
похоже никак))
Ибо есть дефолтная impl<T> From<T> for T
но идея такая (не работает так как есть дефолтная impl<T> From<T> for T): #[derive(Debug, PartialEq)] enum Enum{ A(f32), B(f32), } impl From<Enum> for Enum { fn from(value: Enum) -> Self{ match value { Enum::A(a) => Enum::B(a), Enum::B(b) => Enum::A(b), } } }
не существует таких типов как Enum::A и Enum::B
Еnum в Enum даёт конфликт реализаций
Ну я это и написал))
Разбирать энам на структуры и реализовывать для каждого типа получается?
какая задача-то решается? impl Enum { fn transpose(self) -> Self { use Enum::*; match self { A(value) => B(value), B(value) => A(value), } } }
Да, спасибо. Так тоже подойдёт.
Обсуждают сегодня