cargo: switch from proc-macro pin-project to declarative pin-project-lite

In our simple use cases they both should generate the same code, see
[0] for notable differences. While we cannot drop proc-macro due to
that switch, all of our dependencies that use pinning already use
pin-project-lite, so this allows us to drop a whole crate in general
while not loosing anything.

[0]: https://github.com/taiki-e/pin-project-lite#pin-project-vs-pin-project-lite

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2021-09-22 11:15:38 +02:00
parent a294588409
commit 71549afa3f
5 changed files with 16 additions and 17 deletions

View File

@ -68,8 +68,6 @@ openssl = "0.10"
pam = "0.7"
pam-sys = "0.5"
percent-encoding = "2.1"
pin-utils = "0.1.0"
pin-project = "1.0"
regex = "1.2"
rustyline = "7"
serde = { version = "1.0", features = ["derive"] }

3
debian/control vendored
View File

@ -37,8 +37,7 @@ Build-Depends: debhelper (>= 12),
librust-pam-sys-0.5+default-dev,
librust-pathpatterns-0.1+default-dev (>= 0.1.2-~~),
librust-percent-encoding-2+default-dev (>= 2.1-~~),
librust-pin-project-1+default-dev,
librust-pin-utils-0.1+default-dev,
librust-pin-project-lite-0.2+default-dev,
librust-proxmox-0.13+api-macro-dev,
librust-proxmox-0.13+cli-dev,
librust-proxmox-0.13+default-dev,

View File

@ -18,7 +18,7 @@ libc = "0.2"
nix = "0.19.1"
openssl = "0.10"
percent-encoding = "2.1"
pin-project = "1.0"
pin-project-lite = "0.2"
regex = "1.2"
rustyline = "7"
serde_json = "1.0"

View File

@ -3,7 +3,7 @@ use std::task::{Context, Poll};
use anyhow::Error;
use futures::{ready, Stream};
use pin_project::pin_project;
use pin_project_lite::pin_project;
use pbs_datastore::data_blob::ChunkInfo;
@ -16,12 +16,13 @@ pub trait MergeKnownChunks: Sized {
fn merge_known_chunks(self) -> MergeKnownChunksQueue<Self>;
}
#[pin_project]
pin_project! {
pub struct MergeKnownChunksQueue<S> {
#[pin]
input: S,
buffer: Option<MergedChunkInfo>,
}
}
impl<S> MergeKnownChunks for S
where

View File

@ -8,7 +8,7 @@ use http::{Request, Response};
use hyper::client::connect::{Connected, Connection};
use hyper::client::Client;
use hyper::Body;
use pin_project::pin_project;
use pin_project_lite::pin_project;
use serde_json::Value;
use tokio::io::{AsyncRead, AsyncWrite, AsyncWriteExt, ReadBuf};
use tokio::net::UnixStream;
@ -20,12 +20,13 @@ pub const DEFAULT_VSOCK_PORT: u16 = 807;
#[derive(Clone)]
struct VsockConnector;
#[pin_project]
pin_project! {
/// Wrapper around UnixStream so we can implement hyper::client::connect::Connection
struct UnixConnection {
#[pin]
stream: UnixStream,
}
}
impl tower_service::Service<Uri> for VsockConnector {
type Response = UnixConnection;