Skip to content

Commit 323d0fe

Browse files
committed
gio: use GStr for the manual extension point implenentation
1 parent 65a06b0 commit 323d0fe

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed

gio/src/io_extension_point.rs

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
use std::{fmt, marker::PhantomData, ptr};
44

5-
use glib::{translate::*, Type};
5+
use glib::{translate::*, GString, IntoGStr, Type};
66

77
use crate::IOExtension;
88

99
// rustdoc-stripper-ignore-next
1010
/// Builder for extension points.
1111
#[derive(Debug)]
1212
#[must_use = "The builder must be built to be used"]
13-
pub struct IOExtensionPointBuilder<'a> {
14-
name: &'a str,
13+
pub struct IOExtensionPointBuilder {
14+
name: GString,
1515
required_type: Option<Type>,
1616
}
1717

18-
impl<'a> IOExtensionPointBuilder<'a> {
19-
fn new(name: &'a str) -> Self {
18+
impl IOExtensionPointBuilder {
19+
fn new(name: GString) -> Self {
2020
Self {
2121
name,
2222
required_type: None,
@@ -80,16 +80,16 @@ impl IOExtensionPoint {
8080
// rustdoc-stripper-ignore-next
8181
/// Create a new builder for an extension point.
8282
#[doc(alias = "g_io_extension_point_register")]
83-
pub fn builder(name: &str) -> IOExtensionPointBuilder {
84-
IOExtensionPointBuilder::new(name)
83+
pub fn builder(name: impl Into<GString>) -> IOExtensionPointBuilder {
84+
IOExtensionPointBuilder::new(name.into())
8585
}
8686

8787
#[doc(alias = "g_io_extension_point_lookup")]
88-
pub fn lookup(name: &str) -> Option<Self> {
89-
unsafe {
88+
pub fn lookup(name: impl IntoGStr) -> Option<Self> {
89+
name.run_with_gstr(|name| unsafe {
9090
let ep = ffi::g_io_extension_point_lookup(name.to_glib_none().0);
9191
from_glib_none(ep)
92-
}
92+
})
9393
}
9494

9595
#[doc(alias = "g_io_extension_point_get_extensions")]
@@ -107,14 +107,14 @@ impl IOExtensionPoint {
107107
}
108108

109109
#[doc(alias = "g_io_extension_point_get_extension_by_name")]
110-
pub fn extension_by_name(&self, name: &str) -> Option<IOExtension> {
111-
unsafe {
110+
pub fn extension_by_name(&self, name: impl IntoGStr) -> Option<IOExtension> {
111+
name.run_with_gstr(|name| unsafe {
112112
let e = ffi::g_io_extension_point_get_extension_by_name(
113113
self.0.as_ptr(),
114114
name.to_glib_none().0,
115115
);
116116
from_glib_none(e)
117-
}
117+
})
118118
}
119119

120120
#[doc(alias = "g_io_extension_point_get_required_type")]
@@ -124,20 +124,22 @@ impl IOExtensionPoint {
124124

125125
#[doc(alias = "g_io_extension_point_implement")]
126126
pub fn implement(
127-
extension_point_name: &str,
127+
extension_point_name: impl IntoGStr,
128128
type_: Type,
129-
extension_name: &str,
129+
extension_name: impl IntoGStr,
130130
priority: i32,
131131
) -> Option<IOExtension> {
132-
unsafe {
133-
let e = ffi::g_io_extension_point_implement(
134-
extension_point_name.to_glib_none().0,
135-
type_.into_glib(),
136-
extension_name.to_glib_none().0,
137-
priority,
138-
);
139-
from_glib_none(e)
140-
}
132+
extension_point_name.run_with_gstr(|extension_point_name| {
133+
extension_name.run_with_gstr(|extension_name| unsafe {
134+
let e = ffi::g_io_extension_point_implement(
135+
extension_point_name.to_glib_none().0,
136+
type_.into_glib(),
137+
extension_name.to_glib_none().0,
138+
priority,
139+
);
140+
from_glib_none(e)
141+
})
142+
})
141143
}
142144
}
143145

0 commit comments

Comments
 (0)