diff --git a/glib/src/gstring.rs b/glib/src/gstring.rs index a382dcc15b9d..c681148ad193 100644 --- a/glib/src/gstring.rs +++ b/glib/src/gstring.rs @@ -1040,6 +1040,18 @@ impl std::hash::Hash for GStringPtr { } } +impl> From for GStringPtr { + fn from(value: T) -> Self { + unsafe { + let value = value.as_ref(); + GStringPtr(ptr::NonNull::new_unchecked(ffi::g_strndup( + value.as_ptr() as *const _, + value.len(), + ))) + } + } +} + // size_of::() minus two bytes for length and enum discriminant const INLINE_LEN: usize = mem::size_of::>>() + mem::size_of::() - mem::size_of::() * 2;