From 88acee945e77bd26f2c2df53fe54c4d43016deeb Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 13 Dec 2022 19:21:03 +0000 Subject: [PATCH] QueuedBuf: Use educe to derive Default We are going to change the entry type E to Either, which isn't Default, so the std derive will get the bounds wrong and fail to derive Default for QueuedBuf. Signed-off-by: Ian Jackson --- Cargo.lock | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/prelude.rs | 1 + src/queue.rs | 3 ++- 4 files changed, 76 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 5200572..a63feba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -172,12 +172,38 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "educe" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0188e3c3ba8df5753894d54461f0e39bc91741dc5b22e1c46999ec2c71f4e4" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "either" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +[[package]] +name = "enum-ordinalize" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bb1df8b45ecb7ffa78dca1c17a438fb193eb083db0b1b494d2a61bcb5096a" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + [[package]] name = "env_logger" version = "0.9.1" @@ -433,6 +459,7 @@ dependencies = [ "backtrace", "base64", "cervine", + "educe", "env_logger", "extend", "eyre", @@ -742,6 +769,36 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + [[package]] name = "num_cpus" version = "1.13.1" @@ -945,6 +1002,15 @@ version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "schannel" version = "0.1.20" @@ -984,6 +1050,12 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + [[package]] name = "sha2" version = "0.10.6" diff --git a/Cargo.toml b/Cargo.toml index f0ae298..d14329d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ hippotat-macros = { version = "1.0.0", path = "macros" } # (or currently available): backtrace = "0.3" base64 = "0.13" +educe = "0.4" env_logger = "0.9" futures = "0.3" heck = "0.4" diff --git a/src/prelude.rs b/src/prelude.rs index 9f461c7..9fb30d5 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -26,6 +26,7 @@ pub use std::task::Poll; pub use std::time::{SystemTime, UNIX_EPOCH}; pub use cervine::Cow as Cervine; +pub use educe::Educe; pub use extend::ext; pub use fehler::{throw, throws}; pub use futures::{poll, future, FutureExt, StreamExt, TryStreamExt}; diff --git a/src/queue.rs b/src/queue.rs index 44b2c85..bdcd791 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -32,7 +32,8 @@ impl PacketQueue where D: AsRef<[u8]> { pub fn peek_front(&self) -> Option<&D> { self.queue.front() } } -#[derive(Default,Clone)] +#[derive(Educe,Clone)] +#[educe(Default)] pub struct QueueBuf { content: usize, eaten1: usize, // 0 <= eaten1 < queue.front()...len() -- 2.30.2