pub fn hook(
        &mut self,
        fd: u32,
        f: impl FnMut(HookEnv, &[u8]) -> Vec<Vec<u8>> + Send + Sync + 'a,
    ) -> &mut Self {
        assert!(fd > LOWEST_ALLOWED_FD, "Hook file descriptors must be greater than 10.");

        self.hook_registry_entries.push((fd, hookify(f)));
        self
    }
Add a runtime [Hook](super::Hook) into the context.

Hooks may be invoked from within SP1 by writing to the specified file descriptor `fd`
with [`sp1_zkvm::io::write`], returning a list of arbitrary data that may be read
with successive calls to [`sp1_zkvm::io::read`].

# Panics
Panics if `fd` <= [`LOWEST_ALLOWED_FD`].
crates/core/executor/src/context.rs