Use the slice::windows() iterator instead of zipping twice for Element::link_many() and unlink_many()

Has the same effect but is easier to read and more efficient.
This commit is contained in:
Sebastian Dröge 2019-04-10 16:30:26 +03:00
parent 5a6313c682
commit 5af54b8d94

View file

@ -47,12 +47,12 @@ use gobject_ffi;
impl Element {
pub fn link_many<E: IsA<Element>>(elements: &[&E]) -> Result<(), glib::BoolError> {
skip_assert_initialized!();
for (e1, e2) in elements.iter().zip(elements.iter().skip(1)) {
for e in elements.windows(2) {
unsafe {
glib_result_from_gboolean!(
ffi::gst_element_link(
e1.as_ref().to_glib_none().0,
e2.as_ref().to_glib_none().0,
e[0].as_ref().to_glib_none().0,
e[1].as_ref().to_glib_none().0,
),
"Failed to link elements"
)?;
@ -64,9 +64,12 @@ impl Element {
pub fn unlink_many<E: IsA<Element>>(elements: &[&E]) {
skip_assert_initialized!();
for (e1, e2) in elements.iter().zip(elements.iter().skip(1)) {
for e in elements.windows(2) {
unsafe {
ffi::gst_element_unlink(e1.as_ref().to_glib_none().0, e2.as_ref().to_glib_none().0);
ffi::gst_element_unlink(
e[0].as_ref().to_glib_none().0,
e[1].as_ref().to_glib_none().0,
);
}
}
}