alef 0.62.4

Opinionated polyglot binding generator for Rust libraries
Documentation
            MemorySegment resultPtr = (MemorySegment) {{ ffi_handle }}.invoke({{ args_joined }});
{{ named_frees }}            if (resultPtr.equals(MemorySegment.NULL)) {
                return java.util.Optional.empty();
            }
            Throwable conversionFailure = null;
            try {
                String result = resultPtr.reinterpret(Long.MAX_VALUE).getString(0);
                return java.util.Optional.of(result);
            } catch (Throwable failure) {
                conversionFailure = failure;
                throw failure;
            } finally {
                try {
                    NativeLib.{{ prefix_upper }}_FREE_STRING.invoke(resultPtr);
                } catch (Throwable cleanupFailure) {
                    if (conversionFailure != null) conversionFailure.addSuppressed(cleanupFailure);
                    else throw cleanupFailure;
                }
            }