Trait HyperASTLean

Source
pub trait HyperASTLean: HyperASTShared {
    type T: Tree<Label = Self::Label, TreeId = Self::IdN, ChildIdx = Self::Idx>;
    type NS;
    type LS: LabelStore<str, I = Self::Label>;
    type TS: TypeStore;

    // Required methods
    fn node_store(&self) -> &Self::NS
       where for<'a> &'a Self::NS: NodeStoreLean<Self::IdN, R = Self::T>;
    fn label_store(&self) -> &Self::LS;

    // Provided method
    fn resolve_type(&self, id: &Self::IdN) -> <Self::TS as TypeStore>::Ty
       where for<'a> &'a Self::NS: NodeStoreLean<Self::IdN, R = Self::T> { ... }
}

Required Associated Types§

Source

type T: Tree<Label = Self::Label, TreeId = Self::IdN, ChildIdx = Self::Idx>

Source

type NS

Source

type LS: LabelStore<str, I = Self::Label>

Source

type TS: TypeStore

Required Methods§

Source

fn node_store(&self) -> &Self::NS
where for<'a> &'a Self::NS: NodeStoreLean<Self::IdN, R = Self::T>,

Source

fn label_store(&self) -> &Self::LS

Provided Methods§

Source

fn resolve_type(&self, id: &Self::IdN) -> <Self::TS as TypeStore>::Ty
where for<'a> &'a Self::NS: NodeStoreLean<Self::IdN, R = Self::T>,

Implementations on Foreign Types§

Source§

impl<T> HyperASTLean for &T
where T: HyperASTLean,

Source§

type T = <T as HyperASTLean>::T

Source§

type NS = <T as HyperASTLean>::NS

Source§

type LS = <T as HyperASTLean>::LS

Source§

type TS = <T as HyperASTLean>::TS

Source§

fn node_store(&self) -> &T::NS
where for<'a> &'a Self::NS: NodeStoreLean<Self::IdN, R = Self::T>,

Source§

fn label_store(&self) -> &Self::LS

Source§

fn resolve_type(&self, id: &Self::IdN) -> <Self::TS as TypeStore>::Ty
where for<'a> &'a Self::NS: NodeStoreLean<Self::IdN, R = Self::T>,

Implementors§

Source§

impl<'store, TS> HyperASTLean for &'store SimpleStores<TS, DefaultNodeStore>
where TS: TypeStore,