pub(crate) fn pack(self) -> Value {
        let ptr = ALLOC.with(|alloc| alloc.borrow_mut().alloc(self));
        Value::from_ptr(ptr)
    }
Pack `self` into `Value`(64-bit data representation).

This method consumes `self` and allocates it on the heap, returning `Value`,
a wrapped raw pointer.
ruruby/src/value/rvalue.rs