~radicle-link/dev

radicle-link: nix: run niv update for rust-1.63.0 v1 PROPOSED

Fintan Halpenny: 3
 nix: run niv update for rust-1.63.0
 nix: run niv update for rust-1.63.0
 clippy: run cargo update and switch to FuturesOrdered::push_back

 73 files changed, 367 insertions(+), 369 deletions(-)
#831272 nixos-latest.yml failed
LGTM
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~radicle-link/dev/patches/34916/mbox | git am -3
Learn more about email & git

[PATCH radicle-link v1] nix: run niv update for rust-1.63.0 Export this patch

Update for the latest Rust release.

Clippy contains new warnings which are applied in this patch.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
---

Published-as: https://github.com/FintanH/radicle-link/tree/patches/nix%2Frust-1.63%2Fv1

 cli/linkd-lib/src/api/announce.rs              |  4 ++--
 cli/linkd-lib/src/api/messages.rs              | 14 +++++++-------
 cli/linkd-lib/src/api/sockets.rs               |  6 +++++-
 cli/linkd-lib/src/api/wire_types.rs            |  6 +++---
 cli/linkd-lib/src/api/wire_types/request.rs    |  2 +-
 cli/linkd-lib/src/api/wire_types/response.rs   |  4 ++--
 cli/lnk-identities/src/field.rs                |  2 +-
 cli/lnk-identities/src/git/existing.rs         |  2 +-
 cli/lnk-identities/src/git/new.rs              |  2 +-
 cob/src/authorizing_identity.rs                |  4 ++--
 cob/src/history.rs                             |  2 +-
 librad/src/collaborative_objects.rs            |  2 +-
 librad/src/git/identities/project/heads.rs     |  2 +-
 librad/src/git/local/url.rs                    |  2 +-
 librad/src/git/p2p/url.rs                      |  4 ++--
 librad/src/git/refs.rs                         |  2 +-
 librad/src/git/storage/read.rs                 |  2 +-
 librad/src/git/types/namespace.rs              |  2 +-
 librad/src/git/types/reference.rs              |  4 ++--
 librad/src/net/protocol/broadcast.rs           |  4 ++--
 librad/src/net/protocol/broadcast/storage.rs   |  2 +-
 librad/src/net/protocol/gossip.rs              |  4 ++--
 librad/src/net/protocol/info.rs                |  4 ++--
 librad/src/net/protocol/membership/rpc.rs      |  2 +-
 librad/t/src/integration/smoke/request_pull.rs | 12 ++++--------
 link-git/src/odb/pack.rs                       |  2 +-
 link-git/src/protocol/upload_pack.rs           |  4 ++--
 link-identities/src/generic.rs                 |  6 +++---
 link-identities/src/payload.rs                 | 16 ++++++++--------
 link-identities/src/sign.rs                    |  2 +-
 link-identities/t/src/gen/generic.rs           |  2 +-
 link-identities/t/src/gen/payload.rs           |  4 ++--
 nix/sources.json                               | 12 ++++++------
 test/it-helpers/src/layout.rs                  | 10 +++++-----
 test/it-helpers/src/working_copy.rs            |  4 ++--
 35 files changed, 79 insertions(+), 79 deletions(-)

diff --git a/cli/linkd-lib/src/api/announce.rs b/cli/linkd-lib/src/api/announce.rs
index 1752ac48..0b082c56 100644
--- a/cli/linkd-lib/src/api/announce.rs
+++ b/cli/linkd-lib/src/api/announce.rs
@@ -1,7 +1,7 @@
use librad::{git::Urn, net::protocol::gossip, PeerId};
use radicle_git_ext::Oid;

#[derive(Clone, Debug, PartialEq, minicbor::Decode, minicbor::Encode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Decode, minicbor::Encode)]
pub struct Request {
    #[n(0)]
    pub urn: Urn,
@@ -19,5 +19,5 @@ impl Request {
    }
}

#[derive(Clone, Debug, PartialEq, minicbor::Decode, minicbor::Encode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Decode, minicbor::Encode)]
pub struct Response;
diff --git a/cli/linkd-lib/src/api/messages.rs b/cli/linkd-lib/src/api/messages.rs
index da1657fb..b6db5379 100644
--- a/cli/linkd-lib/src/api/messages.rs
+++ b/cli/linkd-lib/src/api/messages.rs
@@ -39,7 +39,7 @@ impl Default for RequestId {
    }
}

#[derive(Clone, Debug, minicbor::Decode, minicbor::Encode, PartialEq)]
#[derive(Clone, Debug, minicbor::Decode, minicbor::Encode, PartialEq, Eq)]
#[cbor(transparent)]
pub struct UserAgent(#[n(0)] String);

@@ -61,20 +61,20 @@ impl<'a> From<&'a UserAgent> for &'a str {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum RequestMode {
    FireAndForget,
    ReportProgress,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Request {
    pub user_agent: UserAgent,
    pub mode: RequestMode,
    pub payload: RequestPayload,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum RequestPayload {
    Announce(announce::Request),
    RequestPull(request_pull::Request),
@@ -92,13 +92,13 @@ impl From<request_pull::Request> for RequestPayload {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Response<P> {
    pub request_id: RequestId,
    pub payload: ResponsePayload<P>,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ResponsePayload<P> {
    Ack,
    Progress(String),
@@ -106,7 +106,7 @@ pub enum ResponsePayload<P> {
    Success(P),
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SomeSuccess {
    Announce(announce::Response),
    RequestPull(request_pull::Response),
diff --git a/cli/linkd-lib/src/api/sockets.rs b/cli/linkd-lib/src/api/sockets.rs
index 1e00984b..25ffec8d 100644
--- a/cli/linkd-lib/src/api/sockets.rs
+++ b/cli/linkd-lib/src/api/sockets.rs
@@ -142,7 +142,11 @@ fn profile_sockets(profile: &Profile, peer_id: &PeerId) -> Result<SyncSockets, E
    })?;
    nix::unistd::unlink(&events_socket_path).ok();
    let events = StdUnixListener::bind(events_socket_path.as_path()).map_err(|e| {
        tracing::error!("bind events_socket_path: {:?} error: {}", &events_socket_path, &e);
        tracing::error!(
            "bind events_socket_path: {:?} error: {}",
            &events_socket_path,
            &e
        );
        e
    })?;

diff --git a/cli/linkd-lib/src/api/wire_types.rs b/cli/linkd-lib/src/api/wire_types.rs
index 1b75836a..bc50436f 100644
--- a/cli/linkd-lib/src/api/wire_types.rs
+++ b/cli/linkd-lib/src/api/wire_types.rs
@@ -36,13 +36,13 @@ pub use request::Request;
pub mod response;
pub use response::Response;

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Message<Headers> {
    pub headers: Headers,
    pub payload: Option<Vec<u8>>,
}

#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq)]
#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq, Eq)]
#[cbor(transparent)]
pub struct Progress(#[n(0)] String);

@@ -52,7 +52,7 @@ impl From<String> for Progress {
    }
}

#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq)]
#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq, Eq)]
#[cbor(transparent)]
pub struct Error(#[n(0)] String);

diff --git a/cli/linkd-lib/src/api/wire_types/request.rs b/cli/linkd-lib/src/api/wire_types/request.rs
index 8a87b5fd..b31d1dd1 100644
--- a/cli/linkd-lib/src/api/wire_types/request.rs
+++ b/cli/linkd-lib/src/api/wire_types/request.rs
@@ -90,7 +90,7 @@ impl TryFrom<Request> for messages::Request {

// TODO: Introduce get-connected-peers, get-membership-info, and get-stats -- 2,
// 3, and 4 respectively.
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Kind {
    // CBOR encode and decode maps to 1
    Announce,
diff --git a/cli/linkd-lib/src/api/wire_types/response.rs b/cli/linkd-lib/src/api/wire_types/response.rs
index dd9f580e..4bd6744d 100644
--- a/cli/linkd-lib/src/api/wire_types/response.rs
+++ b/cli/linkd-lib/src/api/wire_types/response.rs
@@ -78,7 +78,7 @@ pub enum DecodeError {
    UnknownResponseKind(u8),
}

#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Kind {
    Ack,
    Success,
@@ -87,7 +87,7 @@ pub enum Kind {
    Unknown(u8),
}

#[derive(Clone, Debug, PartialEq, minicbor::Decode, minicbor::Encode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Decode, minicbor::Encode)]
#[cbor(map)]
pub struct Headers {
    #[n(0)]
diff --git a/cli/lnk-identities/src/field.rs b/cli/lnk-identities/src/field.rs
index 5f51a24c..95cdcb0c 100644
--- a/cli/lnk-identities/src/field.rs
+++ b/cli/lnk-identities/src/field.rs
@@ -148,7 +148,7 @@ pub mod person {
            Url::parse("https://radicle.xyz/link/person/default_branch").unwrap();
    }

    #[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
    #[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
    pub struct DefaultBranch {
        #[serde(rename = "default_branch")]
        pub name: Cstring,
diff --git a/cli/lnk-identities/src/git/existing.rs b/cli/lnk-identities/src/git/existing.rs
index bc542969..a5f09f2d 100644
--- a/cli/lnk-identities/src/git/existing.rs
+++ b/cli/lnk-identities/src/git/existing.rs
@@ -35,7 +35,7 @@ pub enum Error {
}

/// For construction, use [`Existing::new`] followed by [`Existing::validate`].
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Existing<V, P> {
    payload: P,
diff --git a/cli/lnk-identities/src/git/new.rs b/cli/lnk-identities/src/git/new.rs
index c8c620f6..f7bd17ae 100644
--- a/cli/lnk-identities/src/git/new.rs
+++ b/cli/lnk-identities/src/git/new.rs
@@ -33,7 +33,7 @@ pub enum Error {
}

/// For construction, use [`New::new`] followed by [`New::validate`].
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct New<V, P> {
    payload: P,
diff --git a/cob/src/authorizing_identity.rs b/cob/src/authorizing_identity.rs
index d8a0ea50..814caf04 100644
--- a/cob/src/authorizing_identity.rs
+++ b/cob/src/authorizing_identity.rs
@@ -22,7 +22,7 @@ pub trait AuthorizingIdentity: std::fmt::Debug {

impl AuthorizingIdentity for VerifiedPerson {
    fn urn(&self) -> Urn {
        let p: &Person = &*self;
        let p: &Person = self;
        p.urn()
    }

@@ -44,7 +44,7 @@ impl AuthorizingIdentity for VerifiedPerson {

impl AuthorizingIdentity for VerifiedProject {
    fn urn(&self) -> Urn {
        let p: &Project = &*self;
        let p: &Project = self;
        p.urn()
    }

diff --git a/cob/src/history.rs b/cob/src/history.rs
index ee7f5e09..6d3666d2 100644
--- a/cob/src/history.rs
+++ b/cob/src/history.rs
@@ -206,7 +206,7 @@ impl From<git2::Oid> for EntryId {
}

/// One entry in the dependency graph for a change
#[derive(Clone, Debug, PartialEq, Hash, minicbor::Encode, minicbor::Decode)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, minicbor::Encode, minicbor::Decode)]
pub struct HistoryEntry {
    #[n(0)]
    id: EntryId,
diff --git a/librad/src/collaborative_objects.rs b/librad/src/collaborative_objects.rs
index 35049a7d..1e63343c 100644
--- a/librad/src/collaborative_objects.rs
+++ b/librad/src/collaborative_objects.rs
@@ -356,7 +356,7 @@ fn resolve_authorizing_identity(
    }
}

#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub enum ObjRefMatch {
    Local(ObjectId),
    Remote(ObjectId),
diff --git a/librad/src/git/identities/project/heads.rs b/librad/src/git/identities/project/heads.rs
index 1fd444f7..9751c375 100644
--- a/librad/src/git/identities/project/heads.rs
+++ b/librad/src/git/identities/project/heads.rs
@@ -16,7 +16,7 @@ use crate::{
use git_ext::{is_not_found_err, RefLike};
use git_ref_format::{lit, name, Namespaced, Qualified, RefStr, RefString};

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum DefaultBranchHead {
    /// Not all delegates agreed on an ancestry tree. Each set of diverging
    /// delegates is included as a `Fork`
diff --git a/librad/src/git/local/url.rs b/librad/src/git/local/url.rs
index f92180b7..633da0ff 100644
--- a/librad/src/git/local/url.rs
+++ b/librad/src/git/local/url.rs
@@ -15,7 +15,7 @@ use thiserror::Error;

use super::Urn;

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct LocalUrl {
    pub urn: Urn,
    pub(super) active_index: Option<usize>,
diff --git a/librad/src/git/p2p/url.rs b/librad/src/git/p2p/url.rs
index 5eb53758..72d2385d 100644
--- a/librad/src/git/p2p/url.rs
+++ b/librad/src/git/p2p/url.rs
@@ -16,7 +16,7 @@ use url::Url;

use crate::{identities::urn::Urn, PeerId};

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct GitUrl<R> {
    pub local_peer: PeerId,
    pub remote_peer: PeerId,
@@ -125,7 +125,7 @@ where
    }
}

#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub struct GitUrlRef<'a, R> {
    pub local_peer: &'a PeerId,
    pub remote_peer: &'a PeerId,
diff --git a/librad/src/git/refs.rs b/librad/src/git/refs.rs
index 9add5e52..a96d7fb5 100644
--- a/librad/src/git/refs.rs
+++ b/librad/src/git/refs.rs
@@ -561,7 +561,7 @@ impl Signed<Verified> {

    pub fn verify(unknown: Signed<Unverified>, signer: &PeerId) -> Result<Self, signed::Error> {
        let canonical = unknown.refs.canonical_form()?;
        if unknown.signature.verify(&canonical, &*signer) {
        if unknown.signature.verify(&canonical, &**signer) {
            Ok(Signed {
                refs: unknown.refs,
                signature: unknown.signature,
diff --git a/librad/src/git/storage/read.rs b/librad/src/git/storage/read.rs
index 6d2a0d4c..6193b9ce 100644
--- a/librad/src/git/storage/read.rs
+++ b/librad/src/git/storage/read.rs
@@ -388,7 +388,7 @@ impl ReadOnlyStorage for ReadOnly {
        RefLike: From<&'b Ref>,
    {
        self.backend
            .refname_to_id(&RefLike::from(reference).to_string())
            .refname_to_id(&RefLike::from(reference))
            .map(ext::Oid::from)
            .map_err(Error::from)
    }
diff --git a/librad/src/git/types/namespace.rs b/librad/src/git/types/namespace.rs
index d7edb859..c1d91abf 100644
--- a/librad/src/git/types/namespace.rs
+++ b/librad/src/git/types/namespace.rs
@@ -19,7 +19,7 @@ pub trait AsNamespace: Into<ext::RefLike> + sealed::Sealed {
    }
}

#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Namespace<R>(Urn<R>);

impl<R> AsNamespace for Namespace<R>
diff --git a/librad/src/git/types/reference.rs b/librad/src/git/types/reference.rs
index 1471da33..9a44c9f8 100644
--- a/librad/src/git/types/reference.rs
+++ b/librad/src/git/types/reference.rs
@@ -27,7 +27,7 @@ pub type Many = ext::RefspecPattern;
/// Alias for [`Many`].
pub type Multiple = Many;

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum RefsCategory {
    Heads,
    Rad,
@@ -129,7 +129,7 @@ impl AsRemote for &ext::RefLike {}
impl sealed::Sealed for ext::RefLike {}
impl sealed::Sealed for &ext::RefLike {}

#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Reference<Namespace, Remote, Cardinality> {
    /// The remote portion of this reference.
    pub remote: Option<Remote>,
diff --git a/librad/src/net/protocol/broadcast.rs b/librad/src/net/protocol/broadcast.rs
index b6ba22e6..2455be6e 100644
--- a/librad/src/net/protocol/broadcast.rs
+++ b/librad/src/net/protocol/broadcast.rs
@@ -24,7 +24,7 @@ pub use metrics::Metrics;
mod storage;
pub use storage::{LocalStorage, PutResult};

#[derive(Clone, Debug, PartialEq, minicbor::Encode, minicbor::Decode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Encode, minicbor::Decode)]
pub enum Message<Addr, Payload> {
    #[n(0)]
    #[cbor(array)]
@@ -103,7 +103,7 @@ impl<A, P: Hash> Hash for Message<A, P> {
// We should've defined `Message` as a flat struct with a discriminator field.
// Since we didn't, introducing v2 extensions through an indirection is slightly
// more convenient, as we don't have to deal with all fields being optional.
#[derive(Clone, Debug, PartialEq, minicbor::Encode, minicbor::Decode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Encode, minicbor::Decode)]
#[cbor(array)]
pub struct Ext {
    /// Sequence number of the [`Message`], unique per [`Message::origin`].
diff --git a/librad/src/net/protocol/broadcast/storage.rs b/librad/src/net/protocol/broadcast/storage.rs
index 91debf6c..5fe1c3de 100644
--- a/librad/src/net/protocol/broadcast/storage.rs
+++ b/librad/src/net/protocol/broadcast/storage.rs
@@ -6,7 +6,7 @@
use crate::PeerId;

/// Result of applying a broadcast update to local storage.
#[derive(Clone, Copy, Debug, PartialEq)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum PutResult<Update> {
    /// The `Update` was not previously seen, and applied successfully.
    ///
diff --git a/librad/src/net/protocol/gossip.rs b/librad/src/net/protocol/gossip.rs
index 13bd21a5..bae5199a 100644
--- a/librad/src/net/protocol/gossip.rs
+++ b/librad/src/net/protocol/gossip.rs
@@ -9,7 +9,7 @@ use minicbor::{Decode, Decoder, Encode, Encoder};

use crate::{identities::git::Urn, PeerId};

#[derive(Clone, Debug, Hash, PartialEq)]
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
pub enum Rev {
    Git(git2::Oid),
}
@@ -58,7 +58,7 @@ impl<'de> Decode<'de> for Rev {
}

/// The gossip payload type
#[derive(Clone, Debug, Hash, PartialEq, Encode, Decode)]
#[derive(Clone, Debug, Hash, PartialEq, Eq, Encode, Decode)]
#[cbor(array)]
pub struct Payload {
    /// URN of an updated or wanted repo.
diff --git a/librad/src/net/protocol/info.rs b/librad/src/net/protocol/info.rs
index a069344f..57cfef4a 100644
--- a/librad/src/net/protocol/info.rs
+++ b/librad/src/net/protocol/info.rs
@@ -78,7 +78,7 @@ impl<Addr> From<PeerInfo<Addr>> for (PeerId, Vec<Addr>) {
    }
}

#[derive(Debug, Clone, PartialEq, Decode, Encode)]
#[derive(Debug, Clone, PartialEq, Eq, Decode, Encode)]
#[cbor(array)]
pub struct GenericPeerInfo<Addr, T> {
    #[n(0)]
@@ -99,7 +99,7 @@ impl<Addr> GenericPeerInfo<Addr, PeerAdvertisement<Addr>> {
    }
}

#[derive(Debug, Clone, PartialEq, Decode, Encode)]
#[derive(Debug, Clone, PartialEq, Eq, Decode, Encode)]
#[cbor(array)]
pub struct PeerAdvertisement<Addr> {
    #[n(0)]
diff --git a/librad/src/net/protocol/membership/rpc.rs b/librad/src/net/protocol/membership/rpc.rs
index 928bf6ad..17698b5c 100644
--- a/librad/src/net/protocol/membership/rpc.rs
+++ b/librad/src/net/protocol/membership/rpc.rs
@@ -5,7 +5,7 @@

use crate::net::protocol::info::{PeerAdvertisement, PeerInfo};

#[derive(Debug, Clone, PartialEq, minicbor::Encode, minicbor::Decode)]
#[derive(Debug, Clone, PartialEq, Eq, minicbor::Encode, minicbor::Decode)]
pub enum Message<Addr> {
    #[n(0)]
    #[cbor(array)]
diff --git a/librad/t/src/integration/smoke/request_pull.rs b/librad/t/src/integration/smoke/request_pull.rs
index 0e448414..acd13346 100644
--- a/librad/t/src/integration/smoke/request_pull.rs
+++ b/librad/t/src/integration/smoke/request_pull.rs
@@ -34,13 +34,11 @@ fn responds_peer_and_client() {
        let responder = net.peers().index(0);
        let requester = testnet::TestClient::init().await.unwrap();
        let TestProject { project, .. } = {
            let proj = requester
            requester
                .using_storage(TestProject::create)
                .await
                .unwrap()
                .unwrap();

            proj
                .unwrap()
        };

        let mut rp = requester
@@ -81,13 +79,11 @@ fn responds_peer_and_peer() {
        let responder = net.peers().index(0);
        let requester = net.peers().index(1);
        let TestProject { project, .. } = {
            let proj = requester
            requester
                .using_storage(TestProject::create)
                .await
                .unwrap()
                .unwrap();

            proj
                .unwrap()
        };

        let mut rp = requester
diff --git a/link-git/src/odb/pack.rs b/link-git/src/odb/pack.rs
index 97155a14..f1e3ed45 100644
--- a/link-git/src/odb/pack.rs
+++ b/link-git/src/odb/pack.rs
@@ -58,7 +58,7 @@ impl AsRef<data::File> for Data {
    }
}

#[derive(Clone, PartialEq)]
#[derive(Clone, PartialEq, Eq)]
pub struct Info {
    pub(super) hash: u64,
    pub data_path: PathBuf,
diff --git a/link-git/src/protocol/upload_pack.rs b/link-git/src/protocol/upload_pack.rs
index 0f7739a3..e509c93e 100644
--- a/link-git/src/protocol/upload_pack.rs
+++ b/link-git/src/protocol/upload_pack.rs
@@ -14,7 +14,7 @@ use versions::Version;

mod legacy;

#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub struct Header {
    pub path: String,
    pub host: Option<(String, Option<u16>)>,
@@ -72,7 +72,7 @@ where
    W: AsyncWrite + Unpin,
{
    let mut recv = BufReader::new(recv);
    let header: Header = match recv.fill_buf().await?.get(0) {
    let header: Header = match recv.fill_buf().await?.first() {
        // legacy clients don't send a proper pktline header :(
        Some(b'g') => {
            let mut buf = String::with_capacity(256);
diff --git a/link-identities/src/generic.rs b/link-identities/src/generic.rs
index 0e90d8b8..6fff531c 100644
--- a/link-identities/src/generic.rs
+++ b/link-identities/src/generic.rs
@@ -21,7 +21,7 @@ pub mod error;
///
/// In `git`, this is represented as a `blob`, where the previous revision
/// `replaces` is a `tree` oid.
#[derive(Clone, Debug, PartialEq, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize)]
pub struct Doc<T, D, Revision> {
    /// Protocol version. Always serialised as `0` (zero).
    pub version: u8,
@@ -131,7 +131,7 @@ impl<T, D, R> sealed::Sealed for Doc<T, D, R> {}
/// `tree` hash. The signatures are encoded in the commit message as [trailers].
///
/// [trailers]: https://git-scm.com/docs/git-interpret-trailers
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Identity<T, Revision, ContentId> {
    pub content_id: ContentId,
    pub root: Revision,
@@ -253,7 +253,7 @@ pub struct Verified;
/// The verification status (ie. which predicates where successfully applied to
/// `T`) is tracked on the type level, as intermediate states may have meaning
/// elsewhere.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Verifying<T, S> {
    inner: T,
    state: PhantomData<S>,
diff --git a/link-identities/src/payload.rs b/link-identities/src/payload.rs
index 3f736231..9269e70e 100644
--- a/link-identities/src/payload.rs
+++ b/link-identities/src/payload.rs
@@ -53,7 +53,7 @@ lazy_static! {

/// Structure `radicle-link` expects to be part of a [`Payload`] describing a
/// personal identity.
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Person {
    pub name: Cstring,
}
@@ -62,7 +62,7 @@ impl sealed::Sealed for Person {}

/// Structure `radicle-link` expects to be part of a [`Payload`] describing a
/// project identity.
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Project {
    pub name: Cstring,
    pub description: Option<Cstring>,
@@ -139,7 +139,7 @@ pub type PersonPayload = Payload<Person>;
pub type ProjectPayload = Payload<Project>;

/// [`Payload`] for which the type is not known statically.
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(untagged)]
#[non_exhaustive]
pub enum SomePayload {
@@ -156,7 +156,7 @@ pub enum SomePayload {
///
/// For compatibility between a native extension and a runtime extension there
/// is a `From` implementation if the type implemenets [`HasNamespace`].
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Ext<T> {
    pub namespace: Url,
    pub val: T,
@@ -243,7 +243,7 @@ where
/// Note that it is an error during deserialisation if duplicate namespaces are
/// found in the input -- this is unlike normal JSON deserialisation, which
/// would just treat objects as maps, retaining the last key found in the input.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Payload<T> {
    pub subject: T,
    ext: BTreeMap<Url, serde_json::Value>,
@@ -419,7 +419,7 @@ where
    }
}

#[derive(Clone, Debug, PartialEq, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize)]
#[serde(untagged)]
pub enum SomeDelegations<R, E>
where
@@ -434,7 +434,7 @@ where
///
/// This is just a set of [`PublicKey`]s. Note that it is a deserialisation
/// error if duplicate elements are found in the input.
#[derive(Clone, Debug, PartialEq, serde::Serialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize)]
pub struct PersonDelegations(NonEmptyOrderedSet<PublicKey>);

impl Deref for PersonDelegations {
@@ -566,7 +566,7 @@ where
/// Note, however, that the specification requires an additional validation step
/// after resolving any [`Urn`] pointers -- the identity document is invalid if
/// it contains duplicate _keys_.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ProjectDelegations<R: Ord> {
    inner: BTreeSet<KeyOrUrn<R>>,
}
diff --git a/link-identities/src/sign.rs b/link-identities/src/sign.rs
index cd7a54ab..a584171b 100644
--- a/link-identities/src/sign.rs
+++ b/link-identities/src/sign.rs
@@ -21,7 +21,7 @@ pub mod error;

const TRAILER_TOKEN: &str = "X-Rad-Signature";

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Signature {
    key: PublicKey,
    sig: crypto::Signature,
diff --git a/link-identities/t/src/gen/generic.rs b/link-identities/t/src/gen/generic.rs
index 22b4abdc..7cb7ab13 100644
--- a/link-identities/t/src/gen/generic.rs
+++ b/link-identities/t/src/gen/generic.rs
@@ -51,7 +51,7 @@ impl AsRef<[u8]> for Boring {
}

/// [`Vec`] with at least 2 elements.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct VecOf2<T>(Vec<T>);

impl<T> From<VecOf2<T>> for Vec<T> {
diff --git a/link-identities/t/src/gen/payload.rs b/link-identities/t/src/gen/payload.rs
index 99503c5d..cc176221 100644
--- a/link-identities/t/src/gen/payload.rs
+++ b/link-identities/t/src/gen/payload.rs
@@ -36,7 +36,7 @@ static UPSTREAM_USER_NAMESPACE: Lazy<Url> =
static UPSTREAM_PROJECT_NAMESPACE: Lazy<Url> =
    Lazy::new(|| Url::parse("https://radicle.xyz/upstream/project/v1").unwrap());

#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct UpstreamUser {
    #[serde(rename = "radicle-registry-name")]
    pub registered_as: Cstring,
@@ -56,7 +56,7 @@ impl HasNamespace for UpstreamUser {
    }
}

#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct UpstreamProject {
    #[serde(rename = "radicle-registry-name")]
    pub registered_as: Cstring,
diff --git a/nix/sources.json b/nix/sources.json
index 3004b521..bab035b3 100644
--- a/nix/sources.json
+++ b/nix/sources.json
@@ -17,10 +17,10 @@
        "homepage": "",
        "owner": "NixOS",
        "repo": "nixpkgs",
        "rev": "399c514226ac48d7855838d0777f47f2fa59730a",
        "sha256": "0c1nka1sxfprf457wapk5pydbfxbspjblys44d2kxfkczad246v5",
        "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d",
        "sha256": "04ffwp2gzq0hhz7siskw6qh9ys8ragp7285vi1zh8xjksxn1msc5",
        "type": "tarball",
        "url": "https://github.com/NixOS/nixpkgs/archive/399c514226ac48d7855838d0777f47f2fa59730a.tar.gz",
        "url": "https://github.com/NixOS/nixpkgs/archive/eabc38219184cc3e04a974fe31857d8e0eac098d.tar.gz",
        "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
    },
    "rust-overlay": {
@@ -29,10 +29,10 @@
        "homepage": "",
        "owner": "oxalica",
        "repo": "rust-overlay",
        "rev": "8b4c5bef319198920fd03a916dd5f6600147358b",
        "sha256": "1mvaqkjrxqgvpqja8qa33r8vb59q8hwyh1y3sg3nqxh1lvsw63n6",
        "rev": "c97cf9d581e09b767f5e3503b43dc3e4cd91bd99",
        "sha256": "02r3y1x4sdzdy0qzds6286v51406jk7ywks6fjivmb3c5mlhvq8x",
        "type": "tarball",
        "url": "https://github.com/oxalica/rust-overlay/archive/8b4c5bef319198920fd03a916dd5f6600147358b.tar.gz",
        "url": "https://github.com/oxalica/rust-overlay/archive/c97cf9d581e09b767f5e3503b43dc3e4cd91bd99.tar.gz",
        "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
    }
}
diff --git a/test/it-helpers/src/layout.rs b/test/it-helpers/src/layout.rs
index a73d1147..508c79c1 100644
--- a/test/it-helpers/src/layout.rs
+++ b/test/it-helpers/src/layout.rs
@@ -16,7 +16,7 @@ use librad::{
    PeerId,
};

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct References {
    commits: Vec<Commit>,
    id: RadId,
@@ -24,7 +24,7 @@ pub struct References {
    ids: Vec<Delegate>,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct RadId {
    pub name: Reference<One>,
    pub target: Option<ext::Oid>,
@@ -55,7 +55,7 @@ impl Display for RadId {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct RadSelf {
    pub name: Reference<One>,
    pub exists: bool,
@@ -77,7 +77,7 @@ impl Display for RadSelf {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Delegate {
    pub name: Reference<One>,
    pub exists: bool,
@@ -106,7 +106,7 @@ impl Display for Delegate {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Commit {
    pub urn: Urn,
    pub oid: ext::Oid,
diff --git a/test/it-helpers/src/working_copy.rs b/test/it-helpers/src/working_copy.rs
index b27a149a..ac329460 100644
--- a/test/it-helpers/src/working_copy.rs
+++ b/test/it-helpers/src/working_copy.rs
@@ -271,12 +271,12 @@ where
        let peer_branch = WorkingRemote::Peer(remote).remote_ref(branch);
        let peer_commit = self
            .repo
            .find_reference(&peer_branch.to_string())?
            .find_reference(peer_branch.as_ref())?
            .peel_to_commit()?;
        let local_branch = Qualified::from(lit::refs_heads(branch));
        let local_commit = self
            .repo
            .find_reference(&local_branch.to_string())?
            .find_reference(local_branch.as_ref())?
            .peel_to_commit()?;

        let message = format!("merge {} into {}", peer_branch, local_branch);
-- 
2.31.1
radicle-link/patches/nixos-latest.yml: FAILED in 16m28s

[nix: run niv update for rust-1.63.0][0] from [Fintan Halpenny][1]

[0]: https://lists.sr.ht/~radicle-link/dev/patches/34916
[1]: mailto:fintan.halpenny@gmail.com

✗ #831272 FAILED radicle-link/patches/nixos-latest.yml https://builds.sr.ht/~radicle-link/job/831272
Changes in v2:
* Run cargo update
* Fix deprecated use of push on FuturesOrdered
* Fix broken tests for args parsing

Published-as: https://github.com/FintanH/radicle-link/tree/patches/nix%2Frust-1.63%2Fv2


Fintan Halpenny (2):
  nix: run niv update for rust-1.63.0
  clippy: run cargo update and switch to FuturesOrdered::push_back

 bins/Cargo.lock                               | 415 +++++++++---------
 cli/linkd-lib/src/api/announce.rs             |   4 +-
 cli/linkd-lib/src/api/messages.rs             |  14 +-
 cli/linkd-lib/src/api/sockets.rs              |   6 +-
 cli/linkd-lib/src/api/wire_types.rs           |   6 +-
 cli/linkd-lib/src/api/wire_types/request.rs   |   2 +-
 cli/linkd-lib/src/api/wire_types/response.rs  |   4 +-
 cli/linkd-lib/t/src/tests/args.rs             |   3 +
 cli/lnk-identities/src/field.rs               |   2 +-
 cli/lnk-identities/src/git/existing.rs        |   2 +-
 cli/lnk-identities/src/git/new.rs             |   2 +-
 cob/src/authorizing_identity.rs               |   4 +-
 cob/src/history.rs                            |   2 +-
 librad/src/collaborative_objects.rs           |   2 +-
 librad/src/git/identities/project/heads.rs    |   2 +-
 librad/src/git/local/url.rs                   |   2 +-
 librad/src/git/p2p/url.rs                     |   4 +-
 librad/src/git/refs.rs                        |   2 +-
 librad/src/git/storage/read.rs                |   2 +-
 librad/src/git/types/namespace.rs             |   2 +-
 librad/src/git/types/reference.rs             |   4 +-
 librad/src/net/protocol/broadcast.rs          |   4 +-
 librad/src/net/protocol/broadcast/storage.rs  |   2 +-
 librad/src/net/protocol/gossip.rs             |   4 +-
 librad/src/net/protocol/info.rs               |   4 +-
 librad/src/net/protocol/membership/rpc.rs     |   2 +-
 librad/src/net/protocol/tick.rs               |   2 +-
 .../t/src/integration/smoke/request_pull.rs   |  12 +-
 link-git/src/odb/pack.rs                      |   2 +-
 link-git/src/protocol/upload_pack.rs          |   4 +-
 link-identities/src/generic.rs                |   6 +-
 link-identities/src/payload.rs                |  16 +-
 link-identities/src/sign.rs                   |   2 +-
 link-identities/t/src/gen/generic.rs          |   2 +-
 link-identities/t/src/gen/payload.rs          |   4 +-
 nix/sources.json                              |  12 +-
 test/it-helpers/src/layout.rs                 |  10 +-
 test/it-helpers/src/working_copy.rs           |   4 +-
 38 files changed, 288 insertions(+), 290 deletions(-)

[PATCH radicle-link v2 1/2] nix: run niv update for rust-1.63.0 Export this patch

Update for the latest Rust release.

Clippy contains new warnings which are applied in this patch.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
---
 cli/linkd-lib/src/api/announce.rs              |  4 ++--
 cli/linkd-lib/src/api/messages.rs              | 14 +++++++-------
 cli/linkd-lib/src/api/sockets.rs               |  6 +++++-
 cli/linkd-lib/src/api/wire_types.rs            |  6 +++---
 cli/linkd-lib/src/api/wire_types/request.rs    |  2 +-
 cli/linkd-lib/src/api/wire_types/response.rs   |  4 ++--
 cli/lnk-identities/src/field.rs                |  2 +-
 cli/lnk-identities/src/git/existing.rs         |  2 +-
 cli/lnk-identities/src/git/new.rs              |  2 +-
 cob/src/authorizing_identity.rs                |  4 ++--
 cob/src/history.rs                             |  2 +-
 librad/src/collaborative_objects.rs            |  2 +-
 librad/src/git/identities/project/heads.rs     |  2 +-
 librad/src/git/local/url.rs                    |  2 +-
 librad/src/git/p2p/url.rs                      |  4 ++--
 librad/src/git/refs.rs                         |  2 +-
 librad/src/git/storage/read.rs                 |  2 +-
 librad/src/git/types/namespace.rs              |  2 +-
 librad/src/git/types/reference.rs              |  4 ++--
 librad/src/net/protocol/broadcast.rs           |  4 ++--
 librad/src/net/protocol/broadcast/storage.rs   |  2 +-
 librad/src/net/protocol/gossip.rs              |  4 ++--
 librad/src/net/protocol/info.rs                |  4 ++--
 librad/src/net/protocol/membership/rpc.rs      |  2 +-
 librad/t/src/integration/smoke/request_pull.rs | 12 ++++--------
 link-git/src/odb/pack.rs                       |  2 +-
 link-git/src/protocol/upload_pack.rs           |  4 ++--
 link-identities/src/generic.rs                 |  6 +++---
 link-identities/src/payload.rs                 | 16 ++++++++--------
 link-identities/src/sign.rs                    |  2 +-
 link-identities/t/src/gen/generic.rs           |  2 +-
 link-identities/t/src/gen/payload.rs           |  4 ++--
 nix/sources.json                               | 12 ++++++------
 test/it-helpers/src/layout.rs                  | 10 +++++-----
 test/it-helpers/src/working_copy.rs            |  4 ++--
 35 files changed, 79 insertions(+), 79 deletions(-)

diff --git a/cli/linkd-lib/src/api/announce.rs b/cli/linkd-lib/src/api/announce.rs
index 1752ac48..0b082c56 100644
--- a/cli/linkd-lib/src/api/announce.rs
+++ b/cli/linkd-lib/src/api/announce.rs
@@ -1,7 +1,7 @@
use librad::{git::Urn, net::protocol::gossip, PeerId};
use radicle_git_ext::Oid;

#[derive(Clone, Debug, PartialEq, minicbor::Decode, minicbor::Encode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Decode, minicbor::Encode)]
pub struct Request {
    #[n(0)]
    pub urn: Urn,
@@ -19,5 +19,5 @@ impl Request {
    }
}

#[derive(Clone, Debug, PartialEq, minicbor::Decode, minicbor::Encode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Decode, minicbor::Encode)]
pub struct Response;
diff --git a/cli/linkd-lib/src/api/messages.rs b/cli/linkd-lib/src/api/messages.rs
index da1657fb..b6db5379 100644
--- a/cli/linkd-lib/src/api/messages.rs
+++ b/cli/linkd-lib/src/api/messages.rs
@@ -39,7 +39,7 @@ impl Default for RequestId {
    }
}

#[derive(Clone, Debug, minicbor::Decode, minicbor::Encode, PartialEq)]
#[derive(Clone, Debug, minicbor::Decode, minicbor::Encode, PartialEq, Eq)]
#[cbor(transparent)]
pub struct UserAgent(#[n(0)] String);

@@ -61,20 +61,20 @@ impl<'a> From<&'a UserAgent> for &'a str {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum RequestMode {
    FireAndForget,
    ReportProgress,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Request {
    pub user_agent: UserAgent,
    pub mode: RequestMode,
    pub payload: RequestPayload,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum RequestPayload {
    Announce(announce::Request),
    RequestPull(request_pull::Request),
@@ -92,13 +92,13 @@ impl From<request_pull::Request> for RequestPayload {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Response<P> {
    pub request_id: RequestId,
    pub payload: ResponsePayload<P>,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ResponsePayload<P> {
    Ack,
    Progress(String),
@@ -106,7 +106,7 @@ pub enum ResponsePayload<P> {
    Success(P),
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SomeSuccess {
    Announce(announce::Response),
    RequestPull(request_pull::Response),
diff --git a/cli/linkd-lib/src/api/sockets.rs b/cli/linkd-lib/src/api/sockets.rs
index 1e00984b..25ffec8d 100644
--- a/cli/linkd-lib/src/api/sockets.rs
+++ b/cli/linkd-lib/src/api/sockets.rs
@@ -142,7 +142,11 @@ fn profile_sockets(profile: &Profile, peer_id: &PeerId) -> Result<SyncSockets, E
    })?;
    nix::unistd::unlink(&events_socket_path).ok();
    let events = StdUnixListener::bind(events_socket_path.as_path()).map_err(|e| {
        tracing::error!("bind events_socket_path: {:?} error: {}", &events_socket_path, &e);
        tracing::error!(
            "bind events_socket_path: {:?} error: {}",
            &events_socket_path,
            &e
        );
        e
    })?;

diff --git a/cli/linkd-lib/src/api/wire_types.rs b/cli/linkd-lib/src/api/wire_types.rs
index 1b75836a..bc50436f 100644
--- a/cli/linkd-lib/src/api/wire_types.rs
+++ b/cli/linkd-lib/src/api/wire_types.rs
@@ -36,13 +36,13 @@ pub use request::Request;
pub mod response;
pub use response::Response;

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Message<Headers> {
    pub headers: Headers,
    pub payload: Option<Vec<u8>>,
}

#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq)]
#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq, Eq)]
#[cbor(transparent)]
pub struct Progress(#[n(0)] String);

@@ -52,7 +52,7 @@ impl From<String> for Progress {
    }
}

#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq)]
#[derive(Debug, Clone, minicbor::Encode, minicbor::Decode, PartialEq, Eq)]
#[cbor(transparent)]
pub struct Error(#[n(0)] String);

diff --git a/cli/linkd-lib/src/api/wire_types/request.rs b/cli/linkd-lib/src/api/wire_types/request.rs
index 8a87b5fd..b31d1dd1 100644
--- a/cli/linkd-lib/src/api/wire_types/request.rs
+++ b/cli/linkd-lib/src/api/wire_types/request.rs
@@ -90,7 +90,7 @@ impl TryFrom<Request> for messages::Request {

// TODO: Introduce get-connected-peers, get-membership-info, and get-stats -- 2,
// 3, and 4 respectively.
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Kind {
    // CBOR encode and decode maps to 1
    Announce,
diff --git a/cli/linkd-lib/src/api/wire_types/response.rs b/cli/linkd-lib/src/api/wire_types/response.rs
index dd9f580e..4bd6744d 100644
--- a/cli/linkd-lib/src/api/wire_types/response.rs
+++ b/cli/linkd-lib/src/api/wire_types/response.rs
@@ -78,7 +78,7 @@ pub enum DecodeError {
    UnknownResponseKind(u8),
}

#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Kind {
    Ack,
    Success,
@@ -87,7 +87,7 @@ pub enum Kind {
    Unknown(u8),
}

#[derive(Clone, Debug, PartialEq, minicbor::Decode, minicbor::Encode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Decode, minicbor::Encode)]
#[cbor(map)]
pub struct Headers {
    #[n(0)]
diff --git a/cli/lnk-identities/src/field.rs b/cli/lnk-identities/src/field.rs
index 5f51a24c..95cdcb0c 100644
--- a/cli/lnk-identities/src/field.rs
+++ b/cli/lnk-identities/src/field.rs
@@ -148,7 +148,7 @@ pub mod person {
            Url::parse("https://radicle.xyz/link/person/default_branch").unwrap();
    }

    #[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
    #[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
    pub struct DefaultBranch {
        #[serde(rename = "default_branch")]
        pub name: Cstring,
diff --git a/cli/lnk-identities/src/git/existing.rs b/cli/lnk-identities/src/git/existing.rs
index bc542969..a5f09f2d 100644
--- a/cli/lnk-identities/src/git/existing.rs
+++ b/cli/lnk-identities/src/git/existing.rs
@@ -35,7 +35,7 @@ pub enum Error {
}

/// For construction, use [`Existing::new`] followed by [`Existing::validate`].
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Existing<V, P> {
    payload: P,
diff --git a/cli/lnk-identities/src/git/new.rs b/cli/lnk-identities/src/git/new.rs
index c8c620f6..f7bd17ae 100644
--- a/cli/lnk-identities/src/git/new.rs
+++ b/cli/lnk-identities/src/git/new.rs
@@ -33,7 +33,7 @@ pub enum Error {
}

/// For construction, use [`New::new`] followed by [`New::validate`].
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct New<V, P> {
    payload: P,
diff --git a/cob/src/authorizing_identity.rs b/cob/src/authorizing_identity.rs
index d8a0ea50..814caf04 100644
--- a/cob/src/authorizing_identity.rs
+++ b/cob/src/authorizing_identity.rs
@@ -22,7 +22,7 @@ pub trait AuthorizingIdentity: std::fmt::Debug {

impl AuthorizingIdentity for VerifiedPerson {
    fn urn(&self) -> Urn {
        let p: &Person = &*self;
        let p: &Person = self;
        p.urn()
    }

@@ -44,7 +44,7 @@ impl AuthorizingIdentity for VerifiedPerson {

impl AuthorizingIdentity for VerifiedProject {
    fn urn(&self) -> Urn {
        let p: &Project = &*self;
        let p: &Project = self;
        p.urn()
    }

diff --git a/cob/src/history.rs b/cob/src/history.rs
index ee7f5e09..6d3666d2 100644
--- a/cob/src/history.rs
+++ b/cob/src/history.rs
@@ -206,7 +206,7 @@ impl From<git2::Oid> for EntryId {
}

/// One entry in the dependency graph for a change
#[derive(Clone, Debug, PartialEq, Hash, minicbor::Encode, minicbor::Decode)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, minicbor::Encode, minicbor::Decode)]
pub struct HistoryEntry {
    #[n(0)]
    id: EntryId,
diff --git a/librad/src/collaborative_objects.rs b/librad/src/collaborative_objects.rs
index 35049a7d..1e63343c 100644
--- a/librad/src/collaborative_objects.rs
+++ b/librad/src/collaborative_objects.rs
@@ -356,7 +356,7 @@ fn resolve_authorizing_identity(
    }
}

#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub enum ObjRefMatch {
    Local(ObjectId),
    Remote(ObjectId),
diff --git a/librad/src/git/identities/project/heads.rs b/librad/src/git/identities/project/heads.rs
index 1fd444f7..9751c375 100644
--- a/librad/src/git/identities/project/heads.rs
+++ b/librad/src/git/identities/project/heads.rs
@@ -16,7 +16,7 @@ use crate::{
use git_ext::{is_not_found_err, RefLike};
use git_ref_format::{lit, name, Namespaced, Qualified, RefStr, RefString};

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum DefaultBranchHead {
    /// Not all delegates agreed on an ancestry tree. Each set of diverging
    /// delegates is included as a `Fork`
diff --git a/librad/src/git/local/url.rs b/librad/src/git/local/url.rs
index f92180b7..633da0ff 100644
--- a/librad/src/git/local/url.rs
+++ b/librad/src/git/local/url.rs
@@ -15,7 +15,7 @@ use thiserror::Error;

use super::Urn;

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct LocalUrl {
    pub urn: Urn,
    pub(super) active_index: Option<usize>,
diff --git a/librad/src/git/p2p/url.rs b/librad/src/git/p2p/url.rs
index 5eb53758..72d2385d 100644
--- a/librad/src/git/p2p/url.rs
+++ b/librad/src/git/p2p/url.rs
@@ -16,7 +16,7 @@ use url::Url;

use crate::{identities::urn::Urn, PeerId};

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct GitUrl<R> {
    pub local_peer: PeerId,
    pub remote_peer: PeerId,
@@ -125,7 +125,7 @@ where
    }
}

#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub struct GitUrlRef<'a, R> {
    pub local_peer: &'a PeerId,
    pub remote_peer: &'a PeerId,
diff --git a/librad/src/git/refs.rs b/librad/src/git/refs.rs
index 9add5e52..a96d7fb5 100644
--- a/librad/src/git/refs.rs
+++ b/librad/src/git/refs.rs
@@ -561,7 +561,7 @@ impl Signed<Verified> {

    pub fn verify(unknown: Signed<Unverified>, signer: &PeerId) -> Result<Self, signed::Error> {
        let canonical = unknown.refs.canonical_form()?;
        if unknown.signature.verify(&canonical, &*signer) {
        if unknown.signature.verify(&canonical, &**signer) {
            Ok(Signed {
                refs: unknown.refs,
                signature: unknown.signature,
diff --git a/librad/src/git/storage/read.rs b/librad/src/git/storage/read.rs
index 6d2a0d4c..6193b9ce 100644
--- a/librad/src/git/storage/read.rs
+++ b/librad/src/git/storage/read.rs
@@ -388,7 +388,7 @@ impl ReadOnlyStorage for ReadOnly {
        RefLike: From<&'b Ref>,
    {
        self.backend
            .refname_to_id(&RefLike::from(reference).to_string())
            .refname_to_id(&RefLike::from(reference))
            .map(ext::Oid::from)
            .map_err(Error::from)
    }
diff --git a/librad/src/git/types/namespace.rs b/librad/src/git/types/namespace.rs
index d7edb859..c1d91abf 100644
--- a/librad/src/git/types/namespace.rs
+++ b/librad/src/git/types/namespace.rs
@@ -19,7 +19,7 @@ pub trait AsNamespace: Into<ext::RefLike> + sealed::Sealed {
    }
}

#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Namespace<R>(Urn<R>);

impl<R> AsNamespace for Namespace<R>
diff --git a/librad/src/git/types/reference.rs b/librad/src/git/types/reference.rs
index 1471da33..9a44c9f8 100644
--- a/librad/src/git/types/reference.rs
+++ b/librad/src/git/types/reference.rs
@@ -27,7 +27,7 @@ pub type Many = ext::RefspecPattern;
/// Alias for [`Many`].
pub type Multiple = Many;

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum RefsCategory {
    Heads,
    Rad,
@@ -129,7 +129,7 @@ impl AsRemote for &ext::RefLike {}
impl sealed::Sealed for ext::RefLike {}
impl sealed::Sealed for &ext::RefLike {}

#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Reference<Namespace, Remote, Cardinality> {
    /// The remote portion of this reference.
    pub remote: Option<Remote>,
diff --git a/librad/src/net/protocol/broadcast.rs b/librad/src/net/protocol/broadcast.rs
index b6ba22e6..2455be6e 100644
--- a/librad/src/net/protocol/broadcast.rs
+++ b/librad/src/net/protocol/broadcast.rs
@@ -24,7 +24,7 @@ pub use metrics::Metrics;
mod storage;
pub use storage::{LocalStorage, PutResult};

#[derive(Clone, Debug, PartialEq, minicbor::Encode, minicbor::Decode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Encode, minicbor::Decode)]
pub enum Message<Addr, Payload> {
    #[n(0)]
    #[cbor(array)]
@@ -103,7 +103,7 @@ impl<A, P: Hash> Hash for Message<A, P> {
// We should've defined `Message` as a flat struct with a discriminator field.
// Since we didn't, introducing v2 extensions through an indirection is slightly
// more convenient, as we don't have to deal with all fields being optional.
#[derive(Clone, Debug, PartialEq, minicbor::Encode, minicbor::Decode)]
#[derive(Clone, Debug, PartialEq, Eq, minicbor::Encode, minicbor::Decode)]
#[cbor(array)]
pub struct Ext {
    /// Sequence number of the [`Message`], unique per [`Message::origin`].
diff --git a/librad/src/net/protocol/broadcast/storage.rs b/librad/src/net/protocol/broadcast/storage.rs
index 91debf6c..5fe1c3de 100644
--- a/librad/src/net/protocol/broadcast/storage.rs
+++ b/librad/src/net/protocol/broadcast/storage.rs
@@ -6,7 +6,7 @@
use crate::PeerId;

/// Result of applying a broadcast update to local storage.
#[derive(Clone, Copy, Debug, PartialEq)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum PutResult<Update> {
    /// The `Update` was not previously seen, and applied successfully.
    ///
diff --git a/librad/src/net/protocol/gossip.rs b/librad/src/net/protocol/gossip.rs
index 13bd21a5..bae5199a 100644
--- a/librad/src/net/protocol/gossip.rs
+++ b/librad/src/net/protocol/gossip.rs
@@ -9,7 +9,7 @@ use minicbor::{Decode, Decoder, Encode, Encoder};

use crate::{identities::git::Urn, PeerId};

#[derive(Clone, Debug, Hash, PartialEq)]
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
pub enum Rev {
    Git(git2::Oid),
}
@@ -58,7 +58,7 @@ impl<'de> Decode<'de> for Rev {
}

/// The gossip payload type
#[derive(Clone, Debug, Hash, PartialEq, Encode, Decode)]
#[derive(Clone, Debug, Hash, PartialEq, Eq, Encode, Decode)]
#[cbor(array)]
pub struct Payload {
    /// URN of an updated or wanted repo.
diff --git a/librad/src/net/protocol/info.rs b/librad/src/net/protocol/info.rs
index a069344f..57cfef4a 100644
--- a/librad/src/net/protocol/info.rs
+++ b/librad/src/net/protocol/info.rs
@@ -78,7 +78,7 @@ impl<Addr> From<PeerInfo<Addr>> for (PeerId, Vec<Addr>) {
    }
}

#[derive(Debug, Clone, PartialEq, Decode, Encode)]
#[derive(Debug, Clone, PartialEq, Eq, Decode, Encode)]
#[cbor(array)]
pub struct GenericPeerInfo<Addr, T> {
    #[n(0)]
@@ -99,7 +99,7 @@ impl<Addr> GenericPeerInfo<Addr, PeerAdvertisement<Addr>> {
    }
}

#[derive(Debug, Clone, PartialEq, Decode, Encode)]
#[derive(Debug, Clone, PartialEq, Eq, Decode, Encode)]
#[cbor(array)]
pub struct PeerAdvertisement<Addr> {
    #[n(0)]
diff --git a/librad/src/net/protocol/membership/rpc.rs b/librad/src/net/protocol/membership/rpc.rs
index 928bf6ad..17698b5c 100644
--- a/librad/src/net/protocol/membership/rpc.rs
+++ b/librad/src/net/protocol/membership/rpc.rs
@@ -5,7 +5,7 @@

use crate::net::protocol::info::{PeerAdvertisement, PeerInfo};

#[derive(Debug, Clone, PartialEq, minicbor::Encode, minicbor::Decode)]
#[derive(Debug, Clone, PartialEq, Eq, minicbor::Encode, minicbor::Decode)]
pub enum Message<Addr> {
    #[n(0)]
    #[cbor(array)]
diff --git a/librad/t/src/integration/smoke/request_pull.rs b/librad/t/src/integration/smoke/request_pull.rs
index 0e448414..acd13346 100644
--- a/librad/t/src/integration/smoke/request_pull.rs
+++ b/librad/t/src/integration/smoke/request_pull.rs
@@ -34,13 +34,11 @@ fn responds_peer_and_client() {
        let responder = net.peers().index(0);
        let requester = testnet::TestClient::init().await.unwrap();
        let TestProject { project, .. } = {
            let proj = requester
            requester
                .using_storage(TestProject::create)
                .await
                .unwrap()
                .unwrap();

            proj
                .unwrap()
        };

        let mut rp = requester
@@ -81,13 +79,11 @@ fn responds_peer_and_peer() {
        let responder = net.peers().index(0);
        let requester = net.peers().index(1);
        let TestProject { project, .. } = {
            let proj = requester
            requester
                .using_storage(TestProject::create)
                .await
                .unwrap()
                .unwrap();

            proj
                .unwrap()
        };

        let mut rp = requester
diff --git a/link-git/src/odb/pack.rs b/link-git/src/odb/pack.rs
index 97155a14..f1e3ed45 100644
--- a/link-git/src/odb/pack.rs
+++ b/link-git/src/odb/pack.rs
@@ -58,7 +58,7 @@ impl AsRef<data::File> for Data {
    }
}

#[derive(Clone, PartialEq)]
#[derive(Clone, PartialEq, Eq)]
pub struct Info {
    pub(super) hash: u64,
    pub data_path: PathBuf,
diff --git a/link-git/src/protocol/upload_pack.rs b/link-git/src/protocol/upload_pack.rs
index 0f7739a3..e509c93e 100644
--- a/link-git/src/protocol/upload_pack.rs
+++ b/link-git/src/protocol/upload_pack.rs
@@ -14,7 +14,7 @@ use versions::Version;

mod legacy;

#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub struct Header {
    pub path: String,
    pub host: Option<(String, Option<u16>)>,
@@ -72,7 +72,7 @@ where
    W: AsyncWrite + Unpin,
{
    let mut recv = BufReader::new(recv);
    let header: Header = match recv.fill_buf().await?.get(0) {
    let header: Header = match recv.fill_buf().await?.first() {
        // legacy clients don't send a proper pktline header :(
        Some(b'g') => {
            let mut buf = String::with_capacity(256);
diff --git a/link-identities/src/generic.rs b/link-identities/src/generic.rs
index 0e90d8b8..6fff531c 100644
--- a/link-identities/src/generic.rs
+++ b/link-identities/src/generic.rs
@@ -21,7 +21,7 @@ pub mod error;
///
/// In `git`, this is represented as a `blob`, where the previous revision
/// `replaces` is a `tree` oid.
#[derive(Clone, Debug, PartialEq, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize)]
pub struct Doc<T, D, Revision> {
    /// Protocol version. Always serialised as `0` (zero).
    pub version: u8,
@@ -131,7 +131,7 @@ impl<T, D, R> sealed::Sealed for Doc<T, D, R> {}
/// `tree` hash. The signatures are encoded in the commit message as [trailers].
///
/// [trailers]: https://git-scm.com/docs/git-interpret-trailers
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Identity<T, Revision, ContentId> {
    pub content_id: ContentId,
    pub root: Revision,
@@ -253,7 +253,7 @@ pub struct Verified;
/// The verification status (ie. which predicates where successfully applied to
/// `T`) is tracked on the type level, as intermediate states may have meaning
/// elsewhere.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Verifying<T, S> {
    inner: T,
    state: PhantomData<S>,
diff --git a/link-identities/src/payload.rs b/link-identities/src/payload.rs
index 3f736231..9269e70e 100644
--- a/link-identities/src/payload.rs
+++ b/link-identities/src/payload.rs
@@ -53,7 +53,7 @@ lazy_static! {

/// Structure `radicle-link` expects to be part of a [`Payload`] describing a
/// personal identity.
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Person {
    pub name: Cstring,
}
@@ -62,7 +62,7 @@ impl sealed::Sealed for Person {}

/// Structure `radicle-link` expects to be part of a [`Payload`] describing a
/// project identity.
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Project {
    pub name: Cstring,
    pub description: Option<Cstring>,
@@ -139,7 +139,7 @@ pub type PersonPayload = Payload<Person>;
pub type ProjectPayload = Payload<Project>;

/// [`Payload`] for which the type is not known statically.
#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(untagged)]
#[non_exhaustive]
pub enum SomePayload {
@@ -156,7 +156,7 @@ pub enum SomePayload {
///
/// For compatibility between a native extension and a runtime extension there
/// is a `From` implementation if the type implemenets [`HasNamespace`].
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Ext<T> {
    pub namespace: Url,
    pub val: T,
@@ -243,7 +243,7 @@ where
/// Note that it is an error during deserialisation if duplicate namespaces are
/// found in the input -- this is unlike normal JSON deserialisation, which
/// would just treat objects as maps, retaining the last key found in the input.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Payload<T> {
    pub subject: T,
    ext: BTreeMap<Url, serde_json::Value>,
@@ -419,7 +419,7 @@ where
    }
}

#[derive(Clone, Debug, PartialEq, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize)]
#[serde(untagged)]
pub enum SomeDelegations<R, E>
where
@@ -434,7 +434,7 @@ where
///
/// This is just a set of [`PublicKey`]s. Note that it is a deserialisation
/// error if duplicate elements are found in the input.
#[derive(Clone, Debug, PartialEq, serde::Serialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize)]
pub struct PersonDelegations(NonEmptyOrderedSet<PublicKey>);

impl Deref for PersonDelegations {
@@ -566,7 +566,7 @@ where
/// Note, however, that the specification requires an additional validation step
/// after resolving any [`Urn`] pointers -- the identity document is invalid if
/// it contains duplicate _keys_.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ProjectDelegations<R: Ord> {
    inner: BTreeSet<KeyOrUrn<R>>,
}
diff --git a/link-identities/src/sign.rs b/link-identities/src/sign.rs
index cd7a54ab..a584171b 100644
--- a/link-identities/src/sign.rs
+++ b/link-identities/src/sign.rs
@@ -21,7 +21,7 @@ pub mod error;

const TRAILER_TOKEN: &str = "X-Rad-Signature";

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Signature {
    key: PublicKey,
    sig: crypto::Signature,
diff --git a/link-identities/t/src/gen/generic.rs b/link-identities/t/src/gen/generic.rs
index 22b4abdc..7cb7ab13 100644
--- a/link-identities/t/src/gen/generic.rs
+++ b/link-identities/t/src/gen/generic.rs
@@ -51,7 +51,7 @@ impl AsRef<[u8]> for Boring {
}

/// [`Vec`] with at least 2 elements.
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct VecOf2<T>(Vec<T>);

impl<T> From<VecOf2<T>> for Vec<T> {
diff --git a/link-identities/t/src/gen/payload.rs b/link-identities/t/src/gen/payload.rs
index 99503c5d..cc176221 100644
--- a/link-identities/t/src/gen/payload.rs
+++ b/link-identities/t/src/gen/payload.rs
@@ -36,7 +36,7 @@ static UPSTREAM_USER_NAMESPACE: Lazy<Url> =
static UPSTREAM_PROJECT_NAMESPACE: Lazy<Url> =
    Lazy::new(|| Url::parse("https://radicle.xyz/upstream/project/v1").unwrap());

#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct UpstreamUser {
    #[serde(rename = "radicle-registry-name")]
    pub registered_as: Cstring,
@@ -56,7 +56,7 @@ impl HasNamespace for UpstreamUser {
    }
}

#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct UpstreamProject {
    #[serde(rename = "radicle-registry-name")]
    pub registered_as: Cstring,
diff --git a/nix/sources.json b/nix/sources.json
index 3004b521..bab035b3 100644
--- a/nix/sources.json
+++ b/nix/sources.json
@@ -17,10 +17,10 @@
        "homepage": "",
        "owner": "NixOS",
        "repo": "nixpkgs",
        "rev": "399c514226ac48d7855838d0777f47f2fa59730a",
        "sha256": "0c1nka1sxfprf457wapk5pydbfxbspjblys44d2kxfkczad246v5",
        "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d",
        "sha256": "04ffwp2gzq0hhz7siskw6qh9ys8ragp7285vi1zh8xjksxn1msc5",
        "type": "tarball",
        "url": "https://github.com/NixOS/nixpkgs/archive/399c514226ac48d7855838d0777f47f2fa59730a.tar.gz",
        "url": "https://github.com/NixOS/nixpkgs/archive/eabc38219184cc3e04a974fe31857d8e0eac098d.tar.gz",
        "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
    },
    "rust-overlay": {
@@ -29,10 +29,10 @@
        "homepage": "",
        "owner": "oxalica",
        "repo": "rust-overlay",
        "rev": "8b4c5bef319198920fd03a916dd5f6600147358b",
        "sha256": "1mvaqkjrxqgvpqja8qa33r8vb59q8hwyh1y3sg3nqxh1lvsw63n6",
        "rev": "c97cf9d581e09b767f5e3503b43dc3e4cd91bd99",
        "sha256": "02r3y1x4sdzdy0qzds6286v51406jk7ywks6fjivmb3c5mlhvq8x",
        "type": "tarball",
        "url": "https://github.com/oxalica/rust-overlay/archive/8b4c5bef319198920fd03a916dd5f6600147358b.tar.gz",
        "url": "https://github.com/oxalica/rust-overlay/archive/c97cf9d581e09b767f5e3503b43dc3e4cd91bd99.tar.gz",
        "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
    }
}
diff --git a/test/it-helpers/src/layout.rs b/test/it-helpers/src/layout.rs
index a73d1147..508c79c1 100644
--- a/test/it-helpers/src/layout.rs
+++ b/test/it-helpers/src/layout.rs
@@ -16,7 +16,7 @@ use librad::{
    PeerId,
};

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct References {
    commits: Vec<Commit>,
    id: RadId,
@@ -24,7 +24,7 @@ pub struct References {
    ids: Vec<Delegate>,
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct RadId {
    pub name: Reference<One>,
    pub target: Option<ext::Oid>,
@@ -55,7 +55,7 @@ impl Display for RadId {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct RadSelf {
    pub name: Reference<One>,
    pub exists: bool,
@@ -77,7 +77,7 @@ impl Display for RadSelf {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Delegate {
    pub name: Reference<One>,
    pub exists: bool,
@@ -106,7 +106,7 @@ impl Display for Delegate {
    }
}

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Commit {
    pub urn: Urn,
    pub oid: ext::Oid,
diff --git a/test/it-helpers/src/working_copy.rs b/test/it-helpers/src/working_copy.rs
index b27a149a..ac329460 100644
--- a/test/it-helpers/src/working_copy.rs
+++ b/test/it-helpers/src/working_copy.rs
@@ -271,12 +271,12 @@ where
        let peer_branch = WorkingRemote::Peer(remote).remote_ref(branch);
        let peer_commit = self
            .repo
            .find_reference(&peer_branch.to_string())?
            .find_reference(peer_branch.as_ref())?
            .peel_to_commit()?;
        let local_branch = Qualified::from(lit::refs_heads(branch));
        let local_commit = self
            .repo
            .find_reference(&local_branch.to_string())?
            .find_reference(local_branch.as_ref())?
            .peel_to_commit()?;

        let message = format!("merge {} into {}", peer_branch, local_branch);
-- 
2.31.1

[PATCH radicle-link v2 2/2] clippy: run cargo update and switch to FuturesOrdered::push_back Export this patch

The FuturesOrdered::push function was deprecated. Change to the
recommended FuturesOrdered::push_back.

To ensure everything compiles, run cargo update on the `bins`
workspace to ensure it is using futures-0.3.23.

Eerily, after updating the cli tests broke with missing parameters for
the args parsing tests. Fix this issue by adding the missing parameters.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
---
 bins/Cargo.lock                   | 415 +++++++++++++++---------------
 cli/linkd-lib/t/src/tests/args.rs |   3 +
 librad/src/net/protocol/tick.rs   |   2 +-
 3 files changed, 209 insertions(+), 211 deletions(-)

diff --git a/bins/Cargo.lock b/bins/Cargo.lock
index 7eac42de..ca8d4229 100644
--- a/bins/Cargo.lock
@@ -56,15 +56,15 @@ dependencies = [

[[package]]
name = "anyhow"
version = "1.0.57"
version = "1.0.62"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
checksum = "1485d4d2cc45e7b201ee3767015c96faa5904387c9d87c6efdd0fb511f12d305"

[[package]]
name = "arc-swap"
version = "1.5.0"
version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5d78ce20460b82d3fa150275ed9d55e21064fc7951177baacf86a145c4a4b1f"
checksum = "983cd8b9d4b02a6dc6ffa557262eb5858a27a0038ffffe21a0f133eaa819a164"

[[package]]
name = "arrayref"
@@ -86,9 +86,9 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"

[[package]]
name = "async-channel"
version = "1.6.1"
version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319"
checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28"
dependencies = [
 "concurrent-queue",
 "event-listener",
@@ -110,10 +110,11 @@ dependencies = [

[[package]]
name = "async-io"
version = "1.7.0"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5e18f61464ae81cde0a23e713ae8fd299580c54d697a35820cfd0625b8b0e07"
checksum = "0ab006897723d9352f63e2b13047177c3982d8d79709d713ce7747a8f19fd1b0"
dependencies = [
 "autocfg",
 "concurrent-queue",
 "futures-lite",
 "libc",
@@ -138,11 +139,12 @@ dependencies = [

[[package]]
name = "async-process"
version = "1.4.0"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60c"
checksum = "02111fd8655a613c25069ea89fc8d9bb89331fa77486eb3bc059ee757cfa481c"
dependencies = [
 "async-io",
 "autocfg",
 "blocking",
 "cfg-if 1.0.0",
 "event-listener",
@@ -176,15 +178,15 @@ dependencies = [

[[package]]
name = "async-task"
version = "4.2.0"
version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9"
checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524"

[[package]]
name = "async-trait"
version = "0.1.53"
version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600"
checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f"
dependencies = [
 "proc-macro2",
 "quote",
@@ -220,16 +222,16 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fe17f59a06fe8b87a6fc8bf53bb70b3aba76d7685f432487a68cd5552853625"
dependencies = [
 "getrandom 0.2.6",
 "getrandom 0.2.7",
 "instant",
 "rand",
]

[[package]]
name = "base-x"
version = "0.2.10"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74"
checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270"

[[package]]
name = "base64"
@@ -239,9 +241,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"

[[package]]
name = "base64ct"
version = "1.5.0"
version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179"
checksum = "ea2b2456fd614d856680dcd9fcc660a51a820fa09daef2e49772b56a193c8474"

[[package]]
name = "bcrypt-pbkdf"
@@ -381,9 +383,9 @@ dependencies = [

[[package]]
name = "bumpalo"
version = "3.9.1"
version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d"

[[package]]
name = "byteorder"
@@ -399,9 +401,9 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"

[[package]]
name = "bytes"
version = "1.1.0"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"

[[package]]
name = "bytesize"
@@ -438,9 +440,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"

[[package]]
name = "chacha20"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01b72a433d0cf2aef113ba70f62634c56fddb0f244e6377185c56a7cadbd8f91"
checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6"
dependencies = [
 "cfg-if 1.0.0",
 "cipher",
@@ -472,16 +474,16 @@ dependencies = [

[[package]]
name = "clap"
version = "3.1.18"
version = "3.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
checksum = "29e724a68d9319343bb3328c9cc2dfde263f4b3142ee1059a9980580171c954b"
dependencies = [
 "atty",
 "bitflags",
 "clap_derive",
 "clap_lex",
 "indexmap",
 "lazy_static",
 "once_cell",
 "strsim",
 "termcolor",
 "textwrap",
@@ -489,9 +491,9 @@ dependencies = [

[[package]]
name = "clap_derive"
version = "3.1.18"
version = "3.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c"
checksum = "13547f7012c01ab4a0e8f8967730ada8f9fdf419e8b6c792788f39cf4e46eefa"
dependencies = [
 "heck",
 "proc-macro-error",
@@ -502,11 +504,11 @@ dependencies = [

[[package]]
name = "clap_lex"
version = "0.2.0"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
 "os_str_bytes 6.1.0",
 "os_str_bytes 6.3.0",
]

[[package]]
@@ -550,9 +552,9 @@ dependencies = [

[[package]]
name = "concurrent-queue"
version = "1.2.2"
version = "1.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3"
checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
dependencies = [
 "cache-padded",
]
@@ -571,9 +573,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"

[[package]]
name = "cpufeatures"
version = "0.2.2"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
checksum = "dc948ebb96241bb40ab73effeb80d9f93afaad49359d159a5e61be51619fe813"
dependencies = [
 "libc",
]
@@ -589,9 +591,9 @@ dependencies = [

[[package]]
name = "crossbeam"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845"
checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c"
dependencies = [
 "cfg-if 1.0.0",
 "crossbeam-channel",
@@ -603,9 +605,9 @@ dependencies = [

[[package]]
name = "crossbeam-channel"
version = "0.5.4"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
dependencies = [
 "cfg-if 1.0.0",
 "crossbeam-utils",
@@ -613,9 +615,9 @@ dependencies = [

[[package]]
name = "crossbeam-deque"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
dependencies = [
 "cfg-if 1.0.0",
 "crossbeam-epoch",
@@ -624,23 +626,23 @@ dependencies = [

[[package]]
name = "crossbeam-epoch"
version = "0.9.8"
version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1"
dependencies = [
 "autocfg",
 "cfg-if 1.0.0",
 "crossbeam-utils",
 "lazy_static",
 "memoffset",
 "once_cell",
 "scopeguard",
]

[[package]]
name = "crossbeam-queue"
version = "0.3.5"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2"
checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7"
dependencies = [
 "cfg-if 1.0.0",
 "crossbeam-utils",
@@ -648,12 +650,12 @@ dependencies = [

[[package]]
name = "crossbeam-utils"
version = "0.8.8"
version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
dependencies = [
 "cfg-if 1.0.0",
 "lazy_static",
 "once_cell",
]

[[package]]
@@ -705,7 +707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f"
dependencies = [
 "cfg-if 1.0.0",
 "hashbrown 0.12.1",
 "hashbrown 0.12.3",
 "lock_api",
 "parking_lot_core 0.9.3",
]
@@ -797,9 +799,9 @@ dependencies = [

[[package]]
name = "dyn-clone"
version = "1.0.5"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28"
checksum = "4f94fa09c2aeea5b8839e414b7b841bf429fd25b9c522116ac97ee87856d88b2"

[[package]]
name = "ed25519-zebra"
@@ -818,9 +820,9 @@ dependencies = [

[[package]]
name = "either"
version = "1.6.1"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
dependencies = [
 "serde",
]
@@ -840,15 +842,15 @@ dependencies = [

[[package]]
name = "event-listener"
version = "2.5.2"
version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71"
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"

[[package]]
name = "fastrand"
version = "1.7.0"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
dependencies = [
 "instant",
]
@@ -865,14 +867,14 @@ dependencies = [

[[package]]
name = "filetime"
version = "0.2.16"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c"
checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c"
dependencies = [
 "cfg-if 1.0.0",
 "libc",
 "redox_syscall",
 "winapi 0.3.9",
 "windows-sys",
]

[[package]]
@@ -945,9 +947,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"

[[package]]
name = "futures"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
checksum = "ab30e97ab6aacfe635fad58f22c2bb06c8b685f7421eb1e064a729e2a5f481fa"
dependencies = [
 "futures-channel",
 "futures-core",
@@ -960,9 +962,9 @@ dependencies = [

[[package]]
name = "futures-channel"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
checksum = "2bfc52cbddcfd745bf1740338492bb0bd83d76c67b445f91c5fb29fae29ecaa1"
dependencies = [
 "futures-core",
 "futures-sink",
@@ -970,15 +972,15 @@ dependencies = [

[[package]]
name = "futures-core"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
checksum = "d2acedae88d38235936c3922476b10fced7b2b68136f5e3c03c2d5be348a1115"

[[package]]
name = "futures-executor"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
checksum = "1d11aa21b5b587a64682c0094c2bdd4df0076c5324961a40cc3abd7f37930528"
dependencies = [
 "futures-core",
 "futures-task",
@@ -987,9 +989,9 @@ dependencies = [

[[package]]
name = "futures-io"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
checksum = "93a66fc6d035a26a3ae255a6d2bca35eda63ae4c5512bef54449113f7a1228e5"

[[package]]
name = "futures-lite"
@@ -1008,9 +1010,9 @@ dependencies = [

[[package]]
name = "futures-macro"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
checksum = "0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045d"
dependencies = [
 "proc-macro2",
 "quote",
@@ -1019,15 +1021,15 @@ dependencies = [

[[package]]
name = "futures-sink"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
checksum = "ca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765"

[[package]]
name = "futures-task"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
checksum = "842fc63b931f4056a24d59de13fb1272134ce261816e063e634ad0c15cdc5306"

[[package]]
name = "futures-timer"
@@ -1037,9 +1039,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"

[[package]]
name = "futures-util"
version = "0.3.21"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
checksum = "f0828a5471e340229c11c77ca80017937ce3c58cb788a17e5f1c2d5c485a9577"
dependencies = [
 "futures-channel",
 "futures-core",
@@ -1062,14 +1064,14 @@ dependencies = [
 "bytes 0.5.6",
 "futures",
 "memchr",
 "pin-project 0.4.29",
 "pin-project 0.4.30",
]

[[package]]
name = "generic-array"
version = "0.14.5"
version = "0.14.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
dependencies = [
 "serde",
 "typenum",
@@ -1089,13 +1091,13 @@ dependencies = [

[[package]]
name = "getrandom"
version = "0.2.6"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
dependencies = [
 "cfg-if 1.0.0",
 "libc",
 "wasi 0.10.2+wasi-snapshot-preview1",
 "wasi 0.11.0+wasi-snapshot-preview1",
]

[[package]]
@@ -1220,9 +1222,9 @@ dependencies = [

[[package]]
name = "git-packetline"
version = "0.12.5"
version = "0.12.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c42acbfb60871e96ed09f8c0730020aa4ccfa6ab6bcbb2b64a5150bfc7053773"
checksum = "f80cbb5c48737d89cfb2ba74b8b62df2c36a4ce98ad8225e4125be37453c7fde"
dependencies = [
 "bstr",
 "futures-io",
@@ -1363,9 +1365,9 @@ dependencies = [

[[package]]
name = "git-validate"
version = "0.5.4"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c2c1eaaa942eb3c49ab20f27c0715e79e26e6b156a0f77d7ed7bbb26126a8fa"
checksum = "7af1453adfe6011f0ef71824591b7cdd85850c27bbf3dc8fa855574bed2fe107"
dependencies = [
 "bstr",
 "quick-error",
@@ -1419,9 +1421,9 @@ dependencies = [

[[package]]
name = "globset"
version = "0.4.8"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd"
checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"
dependencies = [
 "aho-corasick",
 "bstr",
@@ -1465,15 +1467,9 @@ dependencies = [

[[package]]
name = "hashbrown"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"

[[package]]
name = "hashbrown"
version = "0.12.1"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"

[[package]]
name = "heck"
@@ -1591,12 +1587,12 @@ dependencies = [

[[package]]
name = "indexmap"
version = "1.8.2"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
dependencies = [
 "autocfg",
 "hashbrown 0.11.2",
 "hashbrown 0.12.3",
]

[[package]]
@@ -1660,9 +1656,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"

[[package]]
name = "itoa"
version = "1.0.2"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"

[[package]]
name = "jobserver"
@@ -1675,9 +1671,9 @@ dependencies = [

[[package]]
name = "js-sys"
version = "0.3.57"
version = "0.3.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"
checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2"
dependencies = [
 "wasm-bindgen",
]
@@ -1722,9 +1718,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"

[[package]]
name = "libc"
version = "0.2.126"
version = "0.2.132"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5"

[[package]]
name = "libgit2-sys"
@@ -1930,7 +1926,7 @@ dependencies = [
 "lazy_static",
 "once_cell",
 "parking_lot 0.12.1",
 "pin-project 1.0.10",
 "pin-project 1.0.12",
 "regex",
 "rustc-hash",
 "tempfile",
@@ -2438,9 +2434,9 @@ dependencies = [

[[package]]
name = "mio"
version = "0.8.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799"
checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
dependencies = [
 "libc",
 "log",
@@ -2655,9 +2651,9 @@ dependencies = [

[[package]]
name = "once_cell"
version = "1.12.0"
version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e"

[[package]]
name = "opaque-debug"
@@ -2673,9 +2669,9 @@ checksum = "6acbef58a60fe69ab50510a55bc8cdd4d6cf2283d27ad338f54cb52747a9cf2d"

[[package]]
name = "os_str_bytes"
version = "6.1.0"
version = "6.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa"
checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"

[[package]]
name = "parking"
@@ -2817,27 +2813,27 @@ dependencies = [

[[package]]
name = "pin-project"
version = "0.4.29"
version = "0.4.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9615c18d31137579e9ff063499264ddc1278e7b1982757ebc111028c4d1dc909"
checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a"
dependencies = [
 "pin-project-internal 0.4.29",
 "pin-project-internal 0.4.30",
]

[[package]]
name = "pin-project"
version = "1.0.10"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e"
checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
dependencies = [
 "pin-project-internal 1.0.10",
 "pin-project-internal 1.0.12",
]

[[package]]
name = "pin-project-internal"
version = "0.4.29"
version = "0.4.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "044964427019eed9d49d9d5bbce6047ef18f37100ea400912a9fa4a3523ab12a"
checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e"
dependencies = [
 "proc-macro2",
 "quote",
@@ -2846,9 +2842,9 @@ dependencies = [

[[package]]
name = "pin-project-internal"
version = "1.0.10"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb"
checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
dependencies = [
 "proc-macro2",
 "quote",
@@ -2875,10 +2871,11 @@ checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"

[[package]]
name = "polling"
version = "2.2.0"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259"
checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011"
dependencies = [
 "autocfg",
 "cfg-if 1.0.0",
 "libc",
 "log",
@@ -2929,9 +2926,9 @@ dependencies = [

[[package]]
name = "proc-macro2"
version = "1.0.39"
version = "1.0.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab"
dependencies = [
 "unicode-ident",
]
@@ -2968,7 +2965,7 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c82c0a393b300104f989f3db8b8637c0d11f7a32a9c214560b47849ba8f119aa"
dependencies = [
 "bytes 1.1.0",
 "bytes 1.2.1",
 "futures",
 "lazy_static",
 "libc",
@@ -2988,7 +2985,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "047aa96ec7ee6acabad7a1318dff72e9aff8994316bf2166c9b94cbec78ca54c"
dependencies = [
 "bytes 1.1.0",
 "bytes 1.2.1",
 "rand",
 "ring",
 "rustls",
@@ -3001,9 +2998,9 @@ dependencies = [

[[package]]
name = "quote"
version = "1.0.18"
version = "1.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
dependencies = [
 "proc-macro2",
]
@@ -3109,7 +3106,7 @@ version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
 "getrandom 0.2.6",
 "getrandom 0.2.7",
]

[[package]]
@@ -3156,9 +3153,9 @@ dependencies = [

[[package]]
name = "redox_syscall"
version = "0.2.13"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
dependencies = [
 "bitflags",
]
@@ -3169,16 +3166,16 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
 "getrandom 0.2.6",
 "getrandom 0.2.7",
 "redox_syscall",
 "thiserror",
]

[[package]]
name = "regex"
version = "1.5.6"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1"
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
 "aho-corasick",
 "memchr",
@@ -3196,9 +3193,9 @@ dependencies = [

[[package]]
name = "regex-syntax"
version = "0.6.26"
version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"

[[package]]
name = "remove_dir_all"
@@ -3255,9 +3252,9 @@ dependencies = [

[[package]]
name = "ryu"
version = "1.0.10"
version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"

[[package]]
name = "salsa20"
@@ -3316,18 +3313,18 @@ dependencies = [

[[package]]
name = "serde"
version = "1.0.137"
version = "1.0.144"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"
checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860"
dependencies = [
 "serde_derive",
]

[[package]]
name = "serde_bytes"
version = "0.11.6"
version = "0.11.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "212e73464ebcde48d723aa02eb270ba62eff38a9b732df31f33f1b4e145f3a54"
checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b"
dependencies = [
 "serde",
]
@@ -3345,9 +3342,9 @@ dependencies = [

[[package]]
name = "serde_derive"
version = "1.0.137"
version = "1.0.144"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"
checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00"
dependencies = [
 "proc-macro2",
 "quote",
@@ -3356,11 +3353,11 @@ dependencies = [

[[package]]
name = "serde_json"
version = "1.0.81"
version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c"
checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
dependencies = [
 "itoa 1.0.2",
 "itoa 1.0.3",
 "ryu",
 "serde",
]
@@ -3448,9 +3445,9 @@ dependencies = [

[[package]]
name = "similar"
version = "2.1.0"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e24979f63a11545f5f2c60141afe249d4f19f84581ea2138065e400941d83d3"
checksum = "62ac7f900db32bf3fd12e0117dd3dc4da74bc52ebaac97f39668446d89694803"

[[package]]
name = "sized-chunks"
@@ -3473,15 +3470,18 @@ dependencies = [

[[package]]
name = "slab"
version = "0.4.6"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
dependencies = [
 "autocfg",
]

[[package]]
name = "smallvec"
version = "1.8.0"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"

[[package]]
name = "socket2"
@@ -3524,9 +3524,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"

[[package]]
name = "syn"
version = "1.0.95"
version = "1.0.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942"
checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13"
dependencies = [
 "proc-macro2",
 "quote",
@@ -3576,18 +3576,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"

[[package]]
name = "thiserror"
version = "1.0.31"
version = "1.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994"
dependencies = [
 "thiserror-impl",
]

[[package]]
name = "thiserror-impl"
version = "1.0.31"
version = "1.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21"
dependencies = [
 "proc-macro2",
 "quote",
@@ -3605,9 +3605,9 @@ dependencies = [

[[package]]
name = "time"
version = "0.3.9"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"
checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b"
dependencies = [
 "libc",
 "num_threads",
@@ -3630,14 +3630,15 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"

[[package]]
name = "tokio"
version = "1.18.2"
version = "1.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4903bf0427cf68dddd5aa6a93220756f8be0c34fcfa9f5e6191e103e15a31395"
checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581"
dependencies = [
 "bytes 1.1.0",
 "autocfg",
 "bytes 1.2.1",
 "libc",
 "memchr",
 "mio 0.8.3",
 "mio 0.8.4",
 "num_cpus",
 "once_cell",
 "pin-project-lite",
@@ -3649,9 +3650,9 @@ dependencies = [

[[package]]
name = "tokio-macros"
version = "1.7.0"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"
checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
dependencies = [
 "proc-macro2",
 "quote",
@@ -3660,9 +3661,9 @@ dependencies = [

[[package]]
name = "tokio-stream"
version = "0.1.8"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3"
checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9"
dependencies = [
 "futures-core",
 "pin-project-lite",
@@ -3680,9 +3681,9 @@ dependencies = [

[[package]]
name = "tracing"
version = "0.1.34"
version = "0.1.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09"
checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307"
dependencies = [
 "cfg-if 1.0.0",
 "pin-project-lite",
@@ -3692,9 +3693,9 @@ dependencies = [

[[package]]
name = "tracing-attributes"
version = "0.1.21"
version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c"
checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"
dependencies = [
 "proc-macro2",
 "quote",
@@ -3703,11 +3704,11 @@ dependencies = [

[[package]]
name = "tracing-core"
version = "0.1.26"
version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f"
checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7"
dependencies = [
 "lazy_static",
 "once_cell",
 "valuable",
]

@@ -3734,13 +3735,13 @@ dependencies = [

[[package]]
name = "tracing-subscriber"
version = "0.3.11"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596"
checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b"
dependencies = [
 "ansi_term",
 "lazy_static",
 "matchers",
 "once_cell",
 "regex",
 "serde",
 "serde_json",
@@ -3776,15 +3777,15 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"

[[package]]
name = "unicode-ident"
version = "1.0.0"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf"

[[package]]
name = "unicode-normalization"
version = "0.1.19"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"
checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
dependencies = [
 "tinyvec",
]
@@ -3836,7 +3837,7 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
dependencies = [
 "getrandom 0.2.6",
 "getrandom 0.2.7",
 "serde",
]

@@ -3891,12 +3892,6 @@ version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"

[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"

[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
@@ -3905,9 +3900,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"

[[package]]
name = "wasm-bindgen"
version = "0.2.80"
version = "0.2.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"
checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d"
dependencies = [
 "cfg-if 1.0.0",
 "wasm-bindgen-macro",
@@ -3915,13 +3910,13 @@ dependencies = [

[[package]]
name = "wasm-bindgen-backend"
version = "0.2.80"
version = "0.2.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"
checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f"
dependencies = [
 "bumpalo",
 "lazy_static",
 "log",
 "once_cell",
 "proc-macro2",
 "quote",
 "syn",
@@ -3930,9 +3925,9 @@ dependencies = [

[[package]]
name = "wasm-bindgen-macro"
version = "0.2.80"
version = "0.2.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602"
dependencies = [
 "quote",
 "wasm-bindgen-macro-support",
@@ -3940,9 +3935,9 @@ dependencies = [

[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.80"
version = "0.2.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da"
dependencies = [
 "proc-macro2",
 "quote",
@@ -3953,15 +3948,15 @@ dependencies = [

[[package]]
name = "wasm-bindgen-shared"
version = "0.2.80"
version = "0.2.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a"

[[package]]
name = "web-sys"
version = "0.3.57"
version = "0.3.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"
checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1"
dependencies = [
 "js-sys",
 "wasm-bindgen",
diff --git a/cli/linkd-lib/t/src/tests/args.rs b/cli/linkd-lib/t/src/tests/args.rs
index 4e8b73bc..f41ed476 100644
--- a/cli/linkd-lib/t/src/tests/args.rs
+++ b/cli/linkd-lib/t/src/tests/args.rs
@@ -217,6 +217,7 @@ fn signer_key_file() -> Result<()> {
        "linkd",
            "--protocol-listen", "localhost",
            "--signer", "key",
            "--key-format", "binary",
            "--key-source", "file",
            "--key-file-path", "~/.config/radicle/secret.key",
    ];
@@ -268,6 +269,7 @@ fn signer_key_ephemeral() -> Result<()> {
            "--protocol-listen", "localhost",
            "--signer", "key",
            "--key-source", "ephemeral",
            "--key-format", "binary",
    ];
    let parsed = Args::try_parse_from(iter)?;
    assert_eq!(
@@ -316,6 +318,7 @@ fn signer_key_stdin() -> Result<()> {
            "--protocol-listen", "localhost",
            "--signer", "key",
            "--key-source", "stdin",
            "--key-format", "binary",
    ];
    let parsed = Args::try_parse_from(iter)?;

diff --git a/librad/src/net/protocol/tick.rs b/librad/src/net/protocol/tick.rs
index a6faeab0..13c00678 100644
--- a/librad/src/net/protocol/tick.rs
+++ b/librad/src/net/protocol/tick.rs
@@ -42,7 +42,7 @@ where
    G: RequestPullGuard,
{
    let mut mcfly = FuturesOrdered::new();
    mcfly.push(one_tock(state.clone(), tock));
    mcfly.push_back(one_tock(state.clone(), tock));

    while let Some(res) = mcfly.next().await {
        tracing::debug!("tock");
-- 
2.31.1