<div dir="ltr">Hi, I'm in the process of building an app on top of the gstreamer rust bindings, and I ran into `gstreamer::prelude::ElementExt::connect_pad_added`. (<a href="https://gstreamer.pages.freedesktop.org/gstreamer-rs/stable/latest/docs/gstreamer/prelude/trait.ElementExt.html#tymethod.connect_pad_added">https://gstreamer.pages.freedesktop.org/gstreamer-rs/stable/latest/docs/gstreamer/prelude/trait.ElementExt.html#tymethod.connect_pad_added</a>) I noticed that the closure taken by this function and other similar functions is Send + Sync. I was curious about the justification behind marking this as Sync.<div><br></div><div>To explain my use case, I'm creating a decodebin, and within the decodebin, creating an appsink. The appsink's callbacks require access to, essentially, a `std::sync::mpsc::Sender`. (Technically it's a `gluttin::event_loop::EventLoopProxy, which contains `Sender`, but I doubt that matters.) `Sender`s are Send, but they're not Sync, so of course I'm wrapping the whole thing in an Arc + Mutex to make the compiler happy, which is fine, just a bit unfortunate.</div><div><br></div><div>So, I thought I would bring this up and see what the reasons for this are, or perhaps, if possible, start a discussion about removing the trait if it's somehow determined that it isn't needed.</div><div><br></div><div>Thanks,</div><div>Steven</div></div>