use super::sys::text::text::upb_DebugString;
use super::{AssociatedMiniTable, MessagePtr};
pub unsafe fn debug_string<T: AssociatedMiniTable>(msg: MessagePtr<T>) -> String {
let mt = T::mini_table();
let msg = msg.raw();
let len = unsafe { upb_DebugString(msg, mt, 0, core::ptr::null_mut(), 0) };
assert!(len < isize::MAX as usize);
let mut buf = vec![0u8; len + 1];
let written_len = unsafe { upb_DebugString(msg, mt, 0, buf.as_mut_ptr(), buf.len()) };
assert_eq!(len, written_len);
String::from_utf8_lossy(buf.as_slice()).to_string()
}