Trait frame_support::traits::IsSubType
source · [−]pub trait IsSubType<T> {
fn is_sub_type(&self) -> Option<&T>;
}
Expand description
Something that can be checked to be a of sub type T
.
This is useful for enums where each variant encapsulates a different sub type, and you need access to these sub types.
For example, in FRAME, this trait is implemented for the runtime Call
enum. Pallets use this
to check if a certain call is an instance of the local pallet’s Call
enum.
Example
enum Test {
String(String),
U32(u32),
}
impl IsSubType<String> for Test {
fn is_sub_type(&self) -> Option<&String> {
match self {
Self::String(ref r) => Some(r),
_ => None,
}
}
}
impl IsSubType<u32> for Test {
fn is_sub_type(&self) -> Option<&u32> {
match self {
Self::U32(ref r) => Some(r),
_ => None,
}
}
}
fn main() {
let data = Test::String("test".into());
assert_eq!("test", IsSubType::<String>::is_sub_type(&data).unwrap().as_str());
}
Required methods
fn is_sub_type(&self) -> Option<&T>
fn is_sub_type(&self) -> Option<&T>
Returns Some(_)
if self
is an instance of sub type T
.