use core::{
fmt::{self, Display, Formatter},
str::FromStr,
};
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub enum DataTrait {
Option,
Vec,
ToI8,
ToI16,
ToI32,
ToI64,
ToI128,
ToU8,
ToU16,
ToU32,
ToU64,
ToU128,
ToF32,
ToF64,
ToBool,
ToByte,
ToChar,
ToString,
TryToI8,
TryToI16,
TryToI32,
TryToI64,
TryToI128,
TryToU8,
TryToU16,
TryToU32,
TryToU64,
TryToU128,
TryToF32,
TryToF64,
TryToBool,
TryToByte,
TryToChar,
TryToString,
SaturatingToI8,
SaturatingToI16,
SaturatingToI32,
SaturatingToI64,
SaturatingToI128,
SaturatingToU8,
SaturatingToU16,
SaturatingToU32,
SaturatingToU64,
SaturatingToU128,
SaturatingToF32,
SaturatingToF64,
Bounded,
Binary,
Signed,
Float,
PartialEquality,
Equality,
PartialOrder,
Order,
Add,
CheckedAdd,
SaturatingAdd,
WrappingAdd,
Sub,
CheckedSub,
SaturatingSub,
WrappingSub,
Mul,
CheckedMul,
SaturatingMul,
WrappingMul,
Div,
CheckedDiv,
Rem,
CheckedRem,
Neg,
CheckedNeg,
WrappingNeg,
Pow,
CheckedPow,
Euclid,
CheckedEuclid,
Hash,
Serialize,
Deserialize,
Display,
}
impl Display for DataTrait {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
DataTrait::Option => write!(f, "Option"),
DataTrait::Vec => write!(f, "Vec"),
DataTrait::ToI8 => write!(f, "ToI8"),
DataTrait::ToI16 => write!(f, "ToI16"),
DataTrait::ToI32 => write!(f, "ToI32"),
DataTrait::ToI64 => write!(f, "ToI64"),
DataTrait::ToI128 => write!(f, "ToI128"),
DataTrait::ToU8 => write!(f, "ToU8"),
DataTrait::ToU16 => write!(f, "ToU16"),
DataTrait::ToU32 => write!(f, "ToU32"),
DataTrait::ToU64 => write!(f, "ToU64"),
DataTrait::ToU128 => write!(f, "ToU128"),
DataTrait::ToF32 => write!(f, "ToF32"),
DataTrait::ToF64 => write!(f, "ToF64"),
DataTrait::ToBool => write!(f, "ToBool"),
DataTrait::ToByte => write!(f, "ToByte"),
DataTrait::ToChar => write!(f, "ToChar"),
DataTrait::ToString => write!(f, "ToString"),
DataTrait::TryToI8 => write!(f, "TryToI8"),
DataTrait::TryToI16 => write!(f, "TryToI16"),
DataTrait::TryToI32 => write!(f, "TryToI32"),
DataTrait::TryToI64 => write!(f, "TryToI64"),
DataTrait::TryToI128 => write!(f, "TryToI128"),
DataTrait::TryToU8 => write!(f, "TryToU8"),
DataTrait::TryToU16 => write!(f, "TryToU16"),
DataTrait::TryToU32 => write!(f, "TryToU32"),
DataTrait::TryToU64 => write!(f, "TryToU64"),
DataTrait::TryToU128 => write!(f, "TryToU128"),
DataTrait::TryToF32 => write!(f, "TryToF32"),
DataTrait::TryToF64 => write!(f, "TryToF64"),
DataTrait::TryToBool => write!(f, "TryToBool"),
DataTrait::TryToByte => write!(f, "TryToByte"),
DataTrait::TryToChar => write!(f, "TryToChar"),
DataTrait::TryToString => write!(f, "TryToString"),
DataTrait::SaturatingToI8 => write!(f, "SaturatingToI8"),
DataTrait::SaturatingToI16 => write!(f, "SaturatingToI16"),
DataTrait::SaturatingToI32 => write!(f, "SaturatingToI32"),
DataTrait::SaturatingToI64 => write!(f, "SaturatingToI64"),
DataTrait::SaturatingToI128 => write!(f, "SaturatingToI128"),
DataTrait::SaturatingToU8 => write!(f, "SaturatingToU8"),
DataTrait::SaturatingToU16 => write!(f, "SaturatingToU16"),
DataTrait::SaturatingToU32 => write!(f, "SaturatingToU32"),
DataTrait::SaturatingToU64 => write!(f, "SaturatingToU64"),
DataTrait::SaturatingToU128 => write!(f, "SaturatingToU128"),
DataTrait::SaturatingToF32 => write!(f, "SaturatingToF32"),
DataTrait::SaturatingToF64 => write!(f, "SaturatingToF64"),
DataTrait::Bounded => write!(f, "Bounded"),
DataTrait::Binary => write!(f, "Binary"),
DataTrait::Signed => write!(f, "Signed"),
DataTrait::Float => write!(f, "Float"),
DataTrait::PartialEquality => write!(f, "PartialEquality"),
DataTrait::Equality => write!(f, "Equality"),
DataTrait::PartialOrder => write!(f, "PartialOrder"),
DataTrait::Order => write!(f, "Order"),
DataTrait::Add => write!(f, "Add"),
DataTrait::CheckedAdd => write!(f, "CheckedAdd"),
DataTrait::SaturatingAdd => write!(f, "SaturatingAdd"),
DataTrait::WrappingAdd => write!(f, "WrappingAdd"),
DataTrait::Sub => write!(f, "Sub"),
DataTrait::CheckedSub => write!(f, "CheckedSub"),
DataTrait::SaturatingSub => write!(f, "SaturatingSub"),
DataTrait::WrappingSub => write!(f, "WrappingSub"),
DataTrait::Mul => write!(f, "Mul"),
DataTrait::CheckedMul => write!(f, "CheckedMul"),
DataTrait::SaturatingMul => write!(f, "SaturatingMul"),
DataTrait::WrappingMul => write!(f, "WrappingMul"),
DataTrait::Div => write!(f, "Div"),
DataTrait::CheckedDiv => write!(f, "CheckedDiv"),
DataTrait::Rem => write!(f, "Rem"),
DataTrait::CheckedRem => write!(f, "CheckedRem"),
DataTrait::Neg => write!(f, "Neg"),
DataTrait::CheckedNeg => write!(f, "CheckedNeg"),
DataTrait::WrappingNeg => write!(f, "WrappingNeg"),
DataTrait::Pow => write!(f, "Pow"),
DataTrait::CheckedPow => write!(f, "CheckedPow"),
DataTrait::Euclid => write!(f, "Euclid"),
DataTrait::CheckedEuclid => write!(f, "CheckedEuclid"),
DataTrait::Hash => write!(f, "Hash"),
DataTrait::Serialize => write!(f, "Serialize"),
DataTrait::Deserialize => write!(f, "Deserialize"),
DataTrait::Display => write!(f, "Display"),
}
}
}
impl FromStr for DataTrait {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"Option" => Ok(DataTrait::Option),
"Vec" => Ok(DataTrait::Vec),
"ToI8" => Ok(DataTrait::ToI8),
"ToI16" => Ok(DataTrait::ToI16),
"ToI32" => Ok(DataTrait::ToI32),
"ToI64" => Ok(DataTrait::ToI64),
"ToI128" => Ok(DataTrait::ToI128),
"ToU8" => Ok(DataTrait::ToU8),
"ToU16" => Ok(DataTrait::ToU16),
"ToU32" => Ok(DataTrait::ToU32),
"ToU64" => Ok(DataTrait::ToU64),
"ToU128" => Ok(DataTrait::ToU128),
"ToF32" => Ok(DataTrait::ToF32),
"ToF64" => Ok(DataTrait::ToF64),
"ToBool" => Ok(DataTrait::ToBool),
"ToByte" => Ok(DataTrait::ToByte),
"ToChar" => Ok(DataTrait::ToChar),
"ToString" => Ok(DataTrait::ToString),
"TryToI8" => Ok(DataTrait::TryToI8),
"TryToI16" => Ok(DataTrait::TryToI16),
"TryToI32" => Ok(DataTrait::TryToI32),
"TryToI64" => Ok(DataTrait::TryToI64),
"TryToI128" => Ok(DataTrait::TryToI128),
"TryToU8" => Ok(DataTrait::TryToU8),
"TryToU16" => Ok(DataTrait::TryToU16),
"TryToU32" => Ok(DataTrait::TryToU32),
"TryToU64" => Ok(DataTrait::TryToU64),
"TryToU128" => Ok(DataTrait::TryToU128),
"TryToF32" => Ok(DataTrait::TryToF32),
"TryToF64" => Ok(DataTrait::TryToF64),
"TryToBool" => Ok(DataTrait::TryToBool),
"TryToByte" => Ok(DataTrait::TryToByte),
"TryToChar" => Ok(DataTrait::TryToChar),
"TryToString" => Ok(DataTrait::TryToString),
"SaturatingToI8" => Ok(DataTrait::SaturatingToI8),
"SaturatingToI16" => Ok(DataTrait::SaturatingToI16),
"SaturatingToI32" => Ok(DataTrait::SaturatingToI32),
"SaturatingToI64" => Ok(DataTrait::SaturatingToI64),
"SaturatingToI128" => Ok(DataTrait::SaturatingToI128),
"SaturatingToU8" => Ok(DataTrait::SaturatingToU8),
"SaturatingToU16" => Ok(DataTrait::SaturatingToU16),
"SaturatingToU32" => Ok(DataTrait::SaturatingToU32),
"SaturatingToU64" => Ok(DataTrait::SaturatingToU64),
"SaturatingToU128" => Ok(DataTrait::SaturatingToU128),
"SaturatingToF32" => Ok(DataTrait::SaturatingToF32),
"SaturatingToF64" => Ok(DataTrait::SaturatingToF64),
"Bounded" => Ok(DataTrait::Bounded),
"Binary" => Ok(DataTrait::Binary),
"Signed" => Ok(DataTrait::Signed),
"Float" => Ok(DataTrait::Float),
"PartialEquality" => Ok(DataTrait::PartialEquality),
"Equality" => Ok(DataTrait::Equality),
"PartialOrder" => Ok(DataTrait::PartialOrder),
"Order" => Ok(DataTrait::Order),
"Add" => Ok(DataTrait::Add),
"CheckedAdd" => Ok(DataTrait::CheckedAdd),
"SaturatingAdd" => Ok(DataTrait::SaturatingAdd),
"WrappingAdd" => Ok(DataTrait::WrappingAdd),
"Sub" => Ok(DataTrait::Sub),
"CheckedSub" => Ok(DataTrait::CheckedSub),
"SaturatingSub" => Ok(DataTrait::SaturatingSub),
"WrappingSub" => Ok(DataTrait::WrappingSub),
"Mul" => Ok(DataTrait::Mul),
"CheckedMul" => Ok(DataTrait::CheckedMul),
"SaturatingMul" => Ok(DataTrait::SaturatingMul),
"WrappingMul" => Ok(DataTrait::WrappingMul),
"Div" => Ok(DataTrait::Div),
"CheckedDiv" => Ok(DataTrait::CheckedDiv),
"Rem" => Ok(DataTrait::Rem),
"CheckedRem" => Ok(DataTrait::CheckedRem),
"Neg" => Ok(DataTrait::Neg),
"CheckedNeg" => Ok(DataTrait::CheckedNeg),
"WrappingNeg" => Ok(DataTrait::WrappingNeg),
"Pow" => Ok(DataTrait::Pow),
"CheckedPow" => Ok(DataTrait::CheckedPow),
"Euclid" => Ok(DataTrait::Euclid),
"CheckedEuclid" => Ok(DataTrait::CheckedEuclid),
"Hash" => Ok(DataTrait::Hash),
"Serialize" => Ok(DataTrait::Serialize),
"Deserialize" => Ok(DataTrait::Deserialize),
"Display" => Ok(DataTrait::Display),
_ => Err(s.to_string()),
}
}
}