unsafe fn ptr_to_string_cloned(input: *mut c_char) -> String {
    CStr::from_ptr(input).to_owned().into_string().expect("CStr::into_string failed")
}
Converts a C string into a Rust String.

# Safety
This function does not free the pointer, so the caller must ensure that the pointer is handled
correctly.
crates/recursion/gnark-ffi/src/ffi/native.rs