Skip to content

Commit

Permalink
glib/GStringPtr: Add as_str() and Deref<Target=&str>
Browse files Browse the repository at this point in the history
I was updating some code to glib 0.18 and we were previously
using `as_str()` - which is what the default Rust nomenclature
for an *infallible* reference-to-reference conversion uses.

The `to_str()` is used for fallible conversions
(e.g. https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.to_str)
which this is not.
  • Loading branch information
cgwalters committed Sep 25, 2023
1 parent 153420b commit 111554e
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion glib/src/gstring.rs
Original file line number Diff line number Diff line change
Expand Up @@ -694,10 +694,17 @@ impl GStringPtr {
// rustdoc-stripper-ignore-next
/// Returns the corresponding [`&str`].
#[inline]
pub fn to_str(&self) -> &str {
pub fn as_str(&self) -> &str {
self.to_gstr().as_str()
}

// rustdoc-stripper-ignore-next
/// This is just an alias for [`as_str`].
#[inline]
pub fn to_str(&self) -> &str {
self
}

// rustdoc-stripper-ignore-next
/// Returns the string's C pointer.
#[inline]
Expand All @@ -724,6 +731,15 @@ impl Clone for GStringPtr {
}
}

impl Deref for GStringPtr {
type Target = str;

#[inline]
fn deref(&self) -> &str {
self.as_str()
}
}

impl IntoGlibPtr<*mut c_char> for GStringPtr {
#[inline]
unsafe fn into_glib_ptr(self) -> *mut c_char {
Expand Down

0 comments on commit 111554e

Please sign in to comment.