use std::ffi::CStr;
+// Local replacement for 1.72.0+ method 'leak' for struct 'std::string::String',
+// <https://doc.rust-lang.org/1.72.0/src/alloc/string.rs.html#1853>
+fn leak_string<'a>(s: String) -> &'a mut str {
+ let slice = s.into_bytes().leak();
+ unsafe { std::str::from_utf8_unchecked_mut(slice) }
+}
+
trait IntoFFI<T> {
fn into_ffi(self) -> T;
}
let rust_string = RustString {
len: str.len(),
cap: str.capacity(),
- ptr: str.leak().as_ptr(),
+ ptr: leak_string(str).as_ptr(),
};
FormatArgsHandle(piece_slice, rust_string)
let cloned_s = s.clone();
// FIXME: Documentation
- s.leak();
+ leak_string(s);
let rust_string = RustString {
len: cloned_s.len(),
cap: cloned_s.capacity(),
- ptr: cloned_s.leak().as_ptr(),
+ ptr: leak_string(cloned_s).as_ptr(),
};
FormatArgsHandle(piece_slice, rust_string)