@@ -439,7 +439,7 @@ impl Variant {
439
439
///
440
440
/// This function panics if not all variants are of type `type_`.
441
441
#[ doc( alias = "g_variant_new_array" ) ]
442
- pub fn array_from_iter_with_type < I : IntoIterator < Item = Variant > > (
442
+ pub fn array_from_iter_with_type < T : AsRef < Variant > , I : IntoIterator < Item = T > > (
443
443
type_ : & VariantTy ,
444
444
children : I ,
445
445
) -> Self {
@@ -448,6 +448,7 @@ impl Variant {
448
448
ffi:: g_variant_builder_init ( builder. as_mut_ptr ( ) , type_. as_array ( ) . to_glib_none ( ) . 0 ) ;
449
449
let mut builder = builder. assume_init ( ) ;
450
450
for value in children. into_iter ( ) {
451
+ let value = value. as_ref ( ) ;
451
452
if ffi:: g_variant_is_of_type ( value. to_glib_none ( ) . 0 , type_. to_glib_none ( ) . 0 )
452
453
== ffi:: GFALSE
453
454
{
@@ -480,13 +481,13 @@ impl Variant {
480
481
// rustdoc-stripper-ignore-next
481
482
/// Creates a new Variant tuple from children.
482
483
#[ doc( alias = "g_variant_new_tuple" ) ]
483
- pub fn tuple_from_iter ( children : impl IntoIterator < Item = Variant > ) -> Self {
484
+ pub fn tuple_from_iter ( children : impl IntoIterator < Item = impl AsRef < Variant > > ) -> Self {
484
485
unsafe {
485
486
let mut builder = mem:: MaybeUninit :: uninit ( ) ;
486
487
ffi:: g_variant_builder_init ( builder. as_mut_ptr ( ) , VariantTy :: TUPLE . to_glib_none ( ) . 0 ) ;
487
488
let mut builder = builder. assume_init ( ) ;
488
489
for value in children. into_iter ( ) {
489
- ffi:: g_variant_builder_add_value ( & mut builder, value. to_glib_none ( ) . 0 ) ;
490
+ ffi:: g_variant_builder_add_value ( & mut builder, value. as_ref ( ) . to_glib_none ( ) . 0 ) ;
490
491
}
491
492
from_glib_none ( ffi:: g_variant_builder_end ( & mut builder) )
492
493
}
@@ -881,6 +882,12 @@ impl Hash for Variant {
881
882
}
882
883
}
883
884
885
+ impl AsRef < Variant > for Variant {
886
+ fn as_ref ( & self ) -> & Self {
887
+ self
888
+ }
889
+ }
890
+
884
891
// rustdoc-stripper-ignore-next
885
892
/// Converts to `Variant`.
886
893
pub trait ToVariant {
0 commit comments