diff --git a/CHANGELOG.md b/CHANGELOG.md index b923a8d..9902d1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com ## [Unreleased] +## [0.1.14] - 2023-10-18 + +- Improve compile time. + ## [0.1.13] - 2023-10-17 - Improve compatibility with old Cargo. @@ -74,7 +78,8 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com Initial release -[Unreleased]: https://github.com/taiki-e/cargo-config2/compare/v0.1.13...HEAD +[Unreleased]: https://github.com/taiki-e/cargo-config2/compare/v0.1.14...HEAD +[0.1.14]: https://github.com/taiki-e/cargo-config2/compare/v0.1.13...v0.1.14 [0.1.13]: https://github.com/taiki-e/cargo-config2/compare/v0.1.12...v0.1.13 [0.1.12]: https://github.com/taiki-e/cargo-config2/compare/v0.1.11...v0.1.12 [0.1.11]: https://github.com/taiki-e/cargo-config2/compare/v0.1.10...v0.1.11 diff --git a/Cargo.toml b/Cargo.toml index e5347c6..dfc7498 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cargo-config2" -version = "0.1.13" +version = "0.1.14" edition = "2021" rust-version = "1.66" license = "Apache-2.0 OR MIT" @@ -26,7 +26,8 @@ doc-scrape-examples = false [dependencies] home = "0.5" once_cell = { version = "1", default-features = false } -serde = { version = "1.0.165", features = ["derive"] } +serde = "1.0.165" +serde_derive = "1.0.165" toml = { version = "0.8", default-features = false, features = ["parse"] } [dev-dependencies] diff --git a/src/de.rs b/src/de.rs index 6c5b873..6078bd8 100644 --- a/src/de.rs +++ b/src/de.rs @@ -15,7 +15,11 @@ use std::{ path::{Path, PathBuf}, }; -use serde::{Deserialize, Serialize}; +use serde::{ + de::{self, Deserialize, Deserializer}, + ser::{Serialize, Serializer}, +}; +use serde_derive::{Deserialize, Serialize}; pub use crate::value::{Definition, Value}; use crate::{ @@ -788,7 +792,7 @@ impl Flags { impl<'de> Deserialize<'de> for Flags { fn deserialize(deserializer: D) -> Result where - D: serde::Deserializer<'de>, + D: Deserializer<'de>, { let v: StringOrArray = Deserialize::deserialize(deserializer)?; match v { @@ -874,7 +878,7 @@ impl PathAndArgs { impl Serialize for PathAndArgs { fn serialize(&self, serializer: S) -> Result where - S: serde::Serializer, + S: Serializer, { match self.deserialized_repr { StringListDeserializedRepr::String => { @@ -899,9 +903,8 @@ impl Serialize for PathAndArgs { impl<'de> Deserialize<'de> for PathAndArgs { fn deserialize(deserializer: D) -> Result where - D: serde::Deserializer<'de>, + D: Deserializer<'de>, { - use serde::de::Error; #[derive(Deserialize)] #[serde(untagged)] enum StringOrArray { @@ -915,7 +918,7 @@ impl<'de> Deserialize<'de> for PathAndArgs { }; match res { Some(path) => Ok(path), - None => Err(D::Error::invalid_length(0, &"at least one element")), + None => Err(de::Error::invalid_length(0, &"at least one element")), } } } @@ -960,7 +963,7 @@ impl StringList { impl Serialize for StringList { fn serialize(&self, serializer: S) -> Result where - S: serde::Serializer, + S: Serializer, { match self.deserialized_repr { StringListDeserializedRepr::String => { @@ -983,7 +986,7 @@ impl Serialize for StringList { impl<'de> Deserialize<'de> for StringList { fn deserialize(deserializer: D) -> Result where - D: serde::Deserializer<'de>, + D: Deserializer<'de>, { let v: StringOrArray = Deserialize::deserialize(deserializer)?; match v { diff --git a/src/easy.rs b/src/easy.rs index 6f0c090..5b0584c 100644 --- a/src/easy.rs +++ b/src/easy.rs @@ -9,7 +9,8 @@ use std::{ process::Command, }; -use serde::Serialize; +use serde::ser::{Serialize, Serializer}; +use serde_derive::Serialize; use crate::{ de::{self, split_encoded, split_space_separated, Color, Frequency, RegistriesProtocol, When}, @@ -625,7 +626,7 @@ impl EnvConfigValue { impl Serialize for EnvConfigValue { fn serialize(&self, serializer: S) -> Result where - S: serde::Serializer, + S: Serializer, { #[derive(Serialize)] #[serde(untagged)] @@ -1046,7 +1047,7 @@ impl PathAndArgs { impl Serialize for PathAndArgs { fn serialize(&self, serializer: S) -> Result where - S: serde::Serializer, + S: Serializer, { let mut v = Vec::with_capacity(1 + self.args.len()); v.push(self.path.to_string_lossy().into_owned()); diff --git a/src/resolve.rs b/src/resolve.rs index 549688b..9ea4b02 100644 --- a/src/resolve.rs +++ b/src/resolve.rs @@ -9,7 +9,11 @@ use std::{ }; use once_cell::unsync::OnceCell; -use serde::{Deserialize, Serialize}; +use serde::{ + de::{Deserialize, Deserializer}, + ser::{Serialize, Serializer}, +}; +use serde_derive::{Deserialize, Serialize}; use crate::{ cfg_expr::expr::{Expression, Predicate}, @@ -492,7 +496,7 @@ impl<'a> From<&'a str> for TargetTripleRef<'a> { impl Serialize for TargetTripleRef<'_> { fn serialize(&self, serializer: S) -> Result where - S: serde::Serializer, + S: Serializer, { self.cli_target_string().serialize(serializer) } @@ -500,7 +504,7 @@ impl Serialize for TargetTripleRef<'_> { impl<'de> Deserialize<'de> for TargetTripleRef<'static> { fn deserialize(deserializer: D) -> Result where - D: serde::Deserializer<'de>, + D: Deserializer<'de>, { Ok(Self::new(String::deserialize(deserializer)?.into(), None, None)) } diff --git a/src/value.rs b/src/value.rs index f2ea764..aceb2a7 100644 --- a/src/value.rs +++ b/src/value.rs @@ -9,7 +9,7 @@ use std::{ path::{Path, PathBuf}, }; -use serde::{Deserialize, Serialize}; +use serde_derive::{Deserialize, Serialize}; use crate::error::Result; diff --git a/src/walk.rs b/src/walk.rs index fe4fc6b..705c113 100644 --- a/src/walk.rs +++ b/src/walk.rs @@ -77,29 +77,27 @@ impl Iterator for Walk<'_> { #[cfg(test)] mod tests { - use anyhow::Result; use fs_err as fs; use super::*; #[test] - fn walk() -> Result<()> { - let tmp = tempfile::tempdir()?; + fn walk() { + let tmp = tempfile::tempdir().unwrap(); let p = tmp.path(); let home = &p.join("a/.cargo"); let cwd = &p.join("a/b/c"); - fs::create_dir_all(home)?; - fs::write(p.join("a/.cargo/config"), "")?; - fs::create_dir_all(p.join("a/b/.cargo"))?; - fs::write(p.join("a/b/.cargo/config"), "")?; - fs::write(p.join("a/b/.cargo/config.toml"), "")?; - fs::create_dir_all(p.join("a/b/c/.cargo"))?; - fs::write(p.join("a/b/c/.cargo/config.toml"), "")?; + fs::create_dir_all(home).unwrap(); + fs::write(p.join("a/.cargo/config"), "").unwrap(); + fs::create_dir_all(p.join("a/b/.cargo")).unwrap(); + fs::write(p.join("a/b/.cargo/config"), "").unwrap(); + fs::write(p.join("a/b/.cargo/config.toml"), "").unwrap(); + fs::create_dir_all(p.join("a/b/c/.cargo")).unwrap(); + fs::write(p.join("a/b/c/.cargo/config.toml"), "").unwrap(); let mut w = Walk::with_cargo_home(cwd, Some(home.clone())); assert_eq!(w.next(), Some(p.join("a/b/c/.cargo/config.toml"))); assert_eq!(w.next(), Some(p.join("a/b/.cargo/config"))); assert_eq!(w.next(), Some(p.join("a/.cargo/config"))); assert_eq!(w.next(), None); - Ok(()) } } diff --git a/tests/test.rs b/tests/test.rs index 98bb5bd..d547c3e 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -166,6 +166,16 @@ fn easy() { assert_reference_example(de).unwrap(); } +#[test] +fn no_manifest_dir() { + let tmpdir = tempfile::tempdir().unwrap(); + assert_eq!( + "", + toml::to_string(&Config::load_with_options(tmpdir.path(), test_options()).unwrap()) + .unwrap() + ); +} + fn de_load(dir: &Path, _cx: ResolveOptions) -> Result { Ok(de::Config::load_with_options(dir, None)?) }