Skip to content

Commit a97c3ff

Browse files
committed
glib: implement HasParamSpecDefaulted for enums and char
`char` has a default in Rust so we can implement in there though it might not be relevant in all contexts. The enum implementation covers any enum that implements `Default`.
1 parent ce3159c commit a97c3ff

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

glib/src/param_spec.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2181,13 +2181,28 @@ pub trait HasParamSpecDefaulted: HasParamSpec + Default {
21812181
}
21822182

21832183
// Manually implement the trait for every Enum
2184-
impl<T: HasParamSpec<ParamSpec = ParamSpecEnum> + StaticType + FromGlib<i32> + IntoGlib<GlibType = i32> + Default> HasParamSpecDefaulted for T {
2184+
impl<
2185+
T: HasParamSpec<ParamSpec = ParamSpecEnum>
2186+
+ StaticType
2187+
+ FromGlib<i32>
2188+
+ IntoGlib<GlibType = i32>
2189+
+ Default,
2190+
> HasParamSpecDefaulted for T
2191+
{
21852192
type BuilderFnDefaulted = fn(name: &str) -> ParamSpecEnumBuilder<T>;
21862193
fn param_spec_builder_defaulted() -> Self::BuilderFnDefaulted {
21872194
|name| Self::ParamSpec::builder(name)
21882195
}
21892196
}
21902197

2198+
// Manually implement the trait for chars
2199+
impl HasParamSpecDefaulted for char {
2200+
type BuilderFnDefaulted = fn(name: &str) -> ParamSpecUnicharBuilder;
2201+
fn param_spec_builder_defaulted() -> Self::BuilderFnDefaulted {
2202+
|name| Self::ParamSpec::builder(name, Default::default())
2203+
}
2204+
}
2205+
21912206
impl<T: crate::value::ToValueOptional + HasParamSpec> HasParamSpec for Option<T> {
21922207
type ParamSpec = T::ParamSpec;
21932208
type SetValue = T::SetValue;

0 commit comments

Comments
 (0)