Skip to content
This repository was archived by the owner on Jun 3, 2025. It is now read-only.

Commit a41abf4

Browse files
Make compact_str dependency optional, too
1 parent 5c78a9b commit a41abf4

File tree

6 files changed

+22
-7
lines changed

6 files changed

+22
-7
lines changed

Justfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ check:
88
pushd zerodeps-example
99
cargo check
1010
cargo check --features=merde
11-
cargo tree --prefix none --no-dedupe | grep -v compact_str
12-
cargo tree --prefix none --no-dedupe --features=merde | grep compact_str
11+
cargo tree --prefix none --no-dedupe | grep -v merde-core
12+
cargo tree --prefix none --no-dedupe --features=merde | grep merde-core
1313
popd

merde-core/Cargo.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,9 @@ keywords = ["merde", "serialization", "deserialization"]
1111
categories = ["encoding", "parser-implementations"]
1212

1313
[dependencies]
14-
compact_str = "0.8.0"
14+
compact_str = { version = "0.8.0", optional = true }
15+
16+
[features]
17+
default = []
18+
full = ["compact_str"]
19+
compact_str = ["dep:compact_str"]

merde-core/src/cowstr.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::{
55
ops::Deref,
66
};
77

8+
#[cfg(feature = "compact_str")]
89
use compact_str::CompactString;
910

1011
use crate::IntoStatic;
@@ -17,7 +18,10 @@ use crate::IntoStatic;
1718
#[derive(Clone)]
1819
pub enum CowStr<'s> {
1920
Borrowed(&'s str),
21+
#[cfg(feature = "compact_str")]
2022
Owned(CompactString),
23+
#[cfg(not(feature = "compact_str"))]
24+
Owned(String),
2125
}
2226

2327
impl Deref for CowStr<'_> {
@@ -35,7 +39,8 @@ impl<'a> From<Cow<'a, str>> for CowStr<'a> {
3539
fn from(s: Cow<'a, str>) -> Self {
3640
match s {
3741
Cow::Borrowed(s) => CowStr::Borrowed(s),
38-
Cow::Owned(s) => CowStr::Owned(CompactString::from(s)),
42+
#[allow(clippy::useless_conversion)]
43+
Cow::Owned(s) => CowStr::Owned(s.into()),
3944
}
4045
}
4146
}
@@ -48,13 +53,14 @@ impl<'s> From<&'s str> for CowStr<'s> {
4853

4954
impl From<String> for CowStr<'_> {
5055
fn from(s: String) -> Self {
51-
CowStr::Owned(CompactString::from(s))
56+
#[allow(clippy::useless_conversion)]
57+
CowStr::Owned(s.into())
5258
}
5359
}
5460

5561
impl From<Box<str>> for CowStr<'_> {
5662
fn from(s: Box<str>) -> Self {
57-
CowStr::Owned(CompactString::from(s))
63+
CowStr::Owned(s.into())
5864
}
5965
}
6066

@@ -68,6 +74,7 @@ impl From<CowStr<'_>> for String {
6874
fn from(s: CowStr<'_>) -> Self {
6975
match s {
7076
CowStr::Borrowed(s) => s.into(),
77+
#[allow(clippy::useless_conversion)]
7178
CowStr::Owned(s) => s.into(),
7279
}
7380
}

merde-core/src/deserialize.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ impl<'s> ValueDeserialize<'s> for Cow<'s, str> {
5555
match value {
5656
Some(Value::Str(s)) => match s {
5757
CowStr::Borrowed(b) => Ok(Cow::Borrowed(b)),
58+
#[allow(clippy::useless_conversion)]
5859
CowStr::Owned(o) => Ok(Cow::Owned(o.into())),
5960
},
6061
Some(v) => Err(MerdeError::MismatchedType {

zerodeps-example/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zerodeps-example/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ publish = false
66

77
[dependencies]
88
merde = { version = "4.0.0", path = "../merde", default-features = false }
9+
merde-core = { version = "4.0.0", path = "../merde-core", default-features = false }
910

1011
[features]
1112
default = []
12-
merde = ["merde/core"]
13+
merde = ["merde/core", "merde-core/compact_str"]

0 commit comments

Comments
 (0)