chiark / gitweb /
Use Educe to impl Default on a couple of types in clisupport
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 31 Mar 2022 19:31:27 +0000 (20:31 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 31 Mar 2022 19:34:39 +0000 (20:34 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Cargo.lock
Cargo.toml
cli/clisupport.rs
src/imports.rs
src/prelude.rs

index 6a90abd03aef16c8a2821320df5a2ec15935daca..24dc9d4af6a15cc1e557bf14912454f394962eca 100644 (file)
@@ -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",
index ee340adaa547099386c9f8eba14e01ca0360f419..f5c675aaa210d03d04869545ecfe7dd82586e441 100644 (file)
@@ -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"
index fd54f27a41319d7e3ac8309ae8f0a2818ab72081..67d1ec85888e9c5a54b5b15339d23df841afd353 100644 (file)
@@ -464,7 +464,8 @@ pub trait SpecParse {
   type S: SomeSpec;
   fn parse(s: String) -> Result<Self::T,AE>;
 }
-#[derive(Debug,Copy,Clone)]
+#[derive(Debug,Copy,Clone,Educe)]
+#[educe(Default)]
 pub struct SpecParseToml<T>(pub PhantomData<T>);
 impl<T:DeserializeOwned+SomeSpec> SpecParse for SpecParseToml<T> {
   type T = T;
@@ -476,7 +477,9 @@ impl<T:DeserializeOwned+SomeSpec> SpecParse for SpecParseToml<T> {
     spec
   }
 }
-impl<T> SpecParseToml<T> { pub fn new() -> Self { Self(default()) } }
+impl<T> SpecParseToml<T> { pub fn new() -> Self { default() } }
+#[derive(Educe)]
+#[educe(Default)]
 pub struct SpecRaw<T>(pub PhantomData<T>);
 impl<T:SomeSpec> SpecParse for SpecRaw<T> {
   type T = String;
@@ -484,7 +487,7 @@ impl<T:SomeSpec> SpecParse for SpecRaw<T> {
   #[throws(AE)]
   fn parse(buf: String) -> String { buf }
 }
-impl<T> SpecRaw<T> { pub fn new() -> Self { Self(default()) } }
+impl<T> SpecRaw<T> { pub fn new() -> Self { default() } }
 
 pub fn spec_arg_is_path(specname: &str) -> Option<String> {
   if specname.contains('/') {
index 28580f2b67ab844105096d4de24fe81e51aaa0e8..70ee5c5927fbe9cac20f374b541059a8af222a43 100644 (file)
@@ -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;
index 0a8db3615c350d3bd49167328f981e36b0332ddb..e15ff3dc09c23804e7de3f79ebc25dc5f06aad41 100644 (file)
@@ -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};