1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
use crate::term_pointer::*;
use crate::type_id::*;
use crate::displayable_with_context::*;
use crate::context::*;

///A pointer to a primitive function term ([`crate::func_impl::FuncImpl`])
///within a [`Context`]'s [`crate::primitive_directory::PrimitiveDirectory`].
#[derive(Copy, Clone, PartialEq, Hash, Eq)]
pub struct PrimitiveTermPointer {
    pub type_id : TypeId,
    pub index : usize
}

impl DisplayableWithContext for PrimitiveTermPointer {
    fn display(&self, ctxt : &Context) -> String {
        let primitive = ctxt.get_primitive(*self);
        primitive.get_name()
    }
}