Upgrade rust/crates/async-trait to 0.1.51

Test: make
Change-Id: I49db210e485350612bd1f2f6ef971b8f33ec6be7
diff --git a/src/expand.rs b/src/expand.rs
index e78c6c4..3ae9eea 100644
--- a/src/expand.rs
+++ b/src/expand.rs
@@ -396,7 +396,13 @@
 fn has_bound(supertraits: &Supertraits, marker: &Ident) -> bool {
     for bound in supertraits {
         if let TypeParamBound::Trait(bound) = bound {
-            if bound.path.is_ident(marker) {
+            if bound.path.is_ident(marker)
+                || bound.path.segments.len() == 3
+                    && (bound.path.segments[0].ident == "std"
+                        || bound.path.segments[0].ident == "core")
+                    && bound.path.segments[1].ident == "marker"
+                    && bound.path.segments[2].ident == *marker
+            {
                 return true;
             }
         }
diff --git a/src/lib.rs b/src/lib.rs
index 100bee6..3ae002a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -259,7 +259,7 @@
 //! implementations for some async methods, there are two resolutions. Either
 //! you can add Send and/or Sync as supertraits (Send if there are `&mut self`
 //! methods with default implementations, Sync if there are `&self` methods with
-//! default implementions) to constrain all implementors of the trait such that
+//! default implementations) to constrain all implementors of the trait such that
 //! the default implementations are applicable to them:
 //!
 //! ```
diff --git a/src/receiver.rs b/src/receiver.rs
index f6ea327..2230db6 100644
--- a/src/receiver.rs
+++ b/src/receiver.rs
@@ -161,7 +161,7 @@
             if i.mac.path.is_ident("macro_rules")
                 || i.mac.path.segments.last().unwrap().ident == "select"
             {
-                self.visit_macro_mut(&mut i.mac)
+                self.visit_macro_mut(&mut i.mac);
             }
         }
     }