From 8d5f383b5b3a8f1209e942bc2f08cdcbdabfc31e Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 31 Mar 2022 20:31:27 +0100 Subject: [PATCH] Use Educe to impl Default on a couple of types in clisupport Signed-off-by: Ian Jackson --- Cargo.lock | 27 +++++++++++++++++++++++++++ Cargo.toml | 1 + cli/clisupport.rs | 9 ++++++--- src/imports.rs | 1 + src/prelude.rs | 1 + 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a90abd0..24dc9d4a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1093,6 +1093,18 @@ dependencies = [ "dtoa", ] +[[package]] +name = "educe" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07b7cc9cd8c08d10db74fca3b20949b9b6199725c04a0cce6d543496098fcac" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "ego-tree" version = "0.6.2" @@ -1141,6 +1153,20 @@ dependencies = [ "syn", ] +[[package]] +name = "enum-ordinalize" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2170fc0efee383079a8bdd05d6ea2a184d2a0f07a1c1dcabdb2fd5e9f24bc36c" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + [[package]] name = "enum_dispatch" version = "0.3.8" @@ -2582,6 +2608,7 @@ dependencies = [ "derive-into-owned", "digest 0.10.3", "downcast-rs", + "educe", "either", "enum-map", "enum_dispatch", diff --git a/Cargo.toml b/Cargo.toml index ee340ada..f5c675aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,6 +42,7 @@ delegate="0.6" derive-into-owned="0.2" digest="0.10" downcast-rs="1" +educe="0.4" either="1" enum_dispatch="0.3.5" env_logger="0.9" diff --git a/cli/clisupport.rs b/cli/clisupport.rs index fd54f27a..67d1ec85 100644 --- a/cli/clisupport.rs +++ b/cli/clisupport.rs @@ -464,7 +464,8 @@ pub trait SpecParse { type S: SomeSpec; fn parse(s: String) -> Result; } -#[derive(Debug,Copy,Clone)] +#[derive(Debug,Copy,Clone,Educe)] +#[educe(Default)] pub struct SpecParseToml(pub PhantomData); impl SpecParse for SpecParseToml { type T = T; @@ -476,7 +477,9 @@ impl SpecParse for SpecParseToml { spec } } -impl SpecParseToml { pub fn new() -> Self { Self(default()) } } +impl SpecParseToml { pub fn new() -> Self { default() } } +#[derive(Educe)] +#[educe(Default)] pub struct SpecRaw(pub PhantomData); impl SpecParse for SpecRaw { type T = String; @@ -484,7 +487,7 @@ impl SpecParse for SpecRaw { #[throws(AE)] fn parse(buf: String) -> String { buf } } -impl SpecRaw { pub fn new() -> Self { Self(default()) } } +impl SpecRaw { pub fn new() -> Self { default() } } pub fn spec_arg_is_path(specname: &str) -> Option { if specname.contains('/') { diff --git a/src/imports.rs b/src/imports.rs index 28580f2b..70ee5c59 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -14,6 +14,7 @@ pub use chrono; pub use chrono_tz; pub use delegate; pub use digest; +pub use educe; pub use either; pub use env_logger; pub use failure; diff --git a/src/prelude.rs b/src/prelude.rs index 0a8db361..e15ff3dc 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -62,6 +62,7 @@ pub use derive_into_owned::IntoOwned; pub use derive_more::*; pub use digest::Digest; pub use downcast_rs::{impl_downcast, Downcast}; +pub use educe::Educe; pub use either::{Either, Left, Right}; pub use enum_dispatch::enum_dispatch; pub use enum_map::{Enum, EnumMap}; -- 2.30.2