[ffx] Change setup test proxy closure to FnMut

You will still need to wrap variables in Arc<Mutex<_>> to interact with
a clone in the closure.  And as async closures are not yet supported, it
will need to be std::sync::Mutex.

Fixed: 70310

Change-Id: Ie228d5e31c0d68415733c5710b9ad0ac3efe3b10
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/513846
Reviewed-by: Jordon Wing <jwing@google.com>
Commit-Queue: Matthew Boetger <boetger@google.com>
diff --git a/src/developer/ffx/core/macro/src/impl.rs b/src/developer/ffx/core/macro/src/impl.rs
index db85c11..3428a47 100644
--- a/src/developer/ffx/core/macro/src/impl.rs
+++ b/src/developer/ffx/core/macro/src/impl.rs
@@ -72,8 +72,8 @@
         Ident::new(&format!("setup_oneshot_fake_{}", proxy_name), Span::call_site());
     quote! {
         #[cfg(test)]
-        fn #method_name<R:'static>(handle_request: R) -> #qualified_proxy_type
-            where R: Fn(fidl::endpoints::Request<<#qualified_proxy_type as fidl::endpoints::Proxy>::Service>) + std::marker::Send
+        fn #method_name<R:'static>(mut handle_request: R) -> #qualified_proxy_type
+            where R: FnMut(fidl::endpoints::Request<<#qualified_proxy_type as fidl::endpoints::Proxy>::Service>) + std::marker::Send
         {
             use futures::TryStreamExt;
             let (proxy, mut stream) =
@@ -88,8 +88,8 @@
         }
 
         #[cfg(test)]
-        fn #oneshot_method_name<R:'static>(handle_request: R) -> #qualified_proxy_type
-            where R: Fn(fidl::endpoints::Request<<#qualified_proxy_type as fidl::endpoints::Proxy>::Service>) + std::marker::Send
+        fn #oneshot_method_name<R:'static>(mut handle_request: R) -> #qualified_proxy_type
+            where R: FnMut(fidl::endpoints::Request<<#qualified_proxy_type as fidl::endpoints::Proxy>::Service>) + std::marker::Send
         {
             use futures::TryStreamExt;
             let (proxy, mut stream) =