Take the non-'static TypeId from core::intrinsics::type_id. Rust 1.99 has no
core::mem::type_info::of, which the nightly bun is pinned to provides.

diff -ru a/src/collections/lib.rs b/src/collections/lib.rs
--- a/src/collections/lib.rs	2026-10-12 15:40:08.638167620 +0100
+++ b/src/collections/lib.rs	2026-10-12 15:42:51.538090488 +0100
@@ -6,9 +6,10 @@
     unsized_const_params,
     const_cmp,
     const_trait_impl,
-    allocator_api
+    allocator_api,
+    core_intrinsics
 )]
-#![allow(incomplete_features)]
+#![allow(incomplete_features, internal_features)]
 #![warn(unused_must_use)]
 
 pub mod hive_array;
diff -ru a/src/collections/multi_array_list.rs b/src/collections/multi_array_list.rs
--- a/src/collections/multi_array_list.rs	2026-10-12 15:40:08.638190933 +0100
+++ b/src/collections/multi_array_list.rs	2026-10-12 15:40:08.639334606 +0100
@@ -47,7 +47,7 @@
 
 use core::alloc::Layout;
 use core::marker::PhantomData;
-use core::mem::type_info;
+use core::intrinsics::type_id as type_info_of;
 use core::mem::{ManuallyDrop, MaybeUninit};
 use core::ptr::{self, NonNull};
 use std::alloc::{Allocator, Global};
@@ -253,7 +253,7 @@
 
 // The reflection methods on `TypeId` are compile-time-only functions: they can
 // be called from a `const` item or an inline `const { }` block, not from a
-// `const fn` body. `type_info::of::<F>()` is `TypeId::of` without the `'static`
+// `const fn` body. `type_info_of::<F>()` is `TypeId::of` without the `'static`
 // bound — reflected field ids are not `'static`-restricted, and column callers
 // routinely use lifetime-carrying field types (`&'a [u8]`, `Ref<'a>`).
 
@@ -318,7 +318,7 @@
     /// fields cannot sum past `size_of::<T>()`). A single-variant enum with an
     /// explicit `#[repr(int)]` still passes; its tag would never be written.
     const COUNT: usize = {
-        let id = type_info::of::<T>();
+        let id = type_info_of::<T>();
         assert!(
             id.variants() == 1,
             "MultiArrayList<T>: T must be a struct with named fields",
@@ -352,7 +352,7 @@
 
     /// `[FieldMeta; COUNT]` in declaration order.
     const META: [FieldMeta; MAX_FIELDS] = {
-        let id = type_info::of::<T>();
+        let id = type_info_of::<T>();
         let n = Self::COUNT;
         assert!(
             n <= MAX_FIELDS,
@@ -443,7 +443,7 @@
     #[cfg(test)]
     const fn index_of<const NAME: &'static str>() -> usize {
         const {
-            let id = type_info::of::<T>();
+            let id = type_info_of::<T>();
             let mut i = 0;
             while i < Self::COUNT {
                 if const_str_eq(id.field(0, i).name(), NAME) {
@@ -466,12 +466,12 @@
     /// rejected.
     const fn check<const NAME: &'static str, F>() -> usize {
         const {
-            let id = type_info::of::<T>();
+            let id = type_info_of::<T>();
             let mut i = 0;
             while i < Self::COUNT {
                 let f = id.field(0, i);
                 if const_str_eq(f.name(), NAME) {
-                    if !(f.type_id() == type_info::of::<F>()) {
+                    if !(f.type_id() == type_info_of::<F>()) {
                         assert!(
                             Self::META[i].size == core::mem::size_of::<F>(),
                             "MultiArrayList: column type does not match field type",
