/// Wrap a `I{{ trait_name }}` vtable into a `{{ handle_type }}` suitable for the
/// generated options-field setter.
/// The returned handle owns the vtable's function pointers and must be
/// released with the matching `{{ prefix }}_visitor_handle_free` once the
/// containing options object is no longer needed.
pub fn {{ snake }}_handle_from_vtable(callbacks: {{ callbacks_type }}) ?{{ handle_type }} {
    var _cb = callbacks;
    return @ptrCast({{ ctor_fn }}(&_cb));
}
