Trait frame_support::traits::IsSubType [−][src]
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
.